Activity

Ritonton

Shipped this project!

I built an in-game overlay + configurator for Universal Analog Input, so you can see UAI state/data on top of games without having to alt-tab all the time

The hardest part was fighting the RTSS overlay stack: I tried using RTSS SDK profiles to get proper custom font/styling, but I couldn’t get it to behave the way I wanted 😖 I still managed to make progress by switching approach and using a workaround: forcing other overlay providers (like Afterburner) to render off-screen so UAI’s overlay can take priority (optional setting, not default), and then I built the UI/configurator around it

I’m really happy with how far this got in a single grind session — the configurator isn’t fully stable yet, but it’s already usable as a pre-release and it proves the whole pipeline works
Pre-release: https://github.com/Ritonton/UniversalAnalogInput/releases/tag/v1.1.0-pre

Ritonton

Cool logo

30/04/26 (Goodbye 👋)


Hello and goodbye to everyone 👋, it’s been pretty amazing how much this event has motivated me to put so much effort into this project. I’ve had a crazy week grinding away at problems that have taught me so much.
Anyway, here’s my devlog:
Today, I worked on the overlay as mentioned yesterday. I tried using the Rive Tuner Statistic Server SDK profiles to address one of my needs: being able to apply a custom font and style to my data. I really did everything I could, but unfortunately, I never managed to get the result I wanted. I think I’ll open an issue, except that RTSS doesn’t have a repo, so there’s no way to report a problem 😖.
Well, despite this setback that took up half my day, I managed to override other overlay providers like Afterburner by making them render off-screen (a workaround that works, even if it’s not very elegant, so it’ll be a feature you have to enable, it won’t be the default). And after that, I managed to build the UI to go with it.
The configurator isn’t stable yet, but you can try it here as a pre-release: https://github.com/Ritonton/UniversalAnalogInput/releases/tag/v1.1.0-pre
Have a good evening, and good luck to everyone, this was my last devlog 😢!
https://github.com/Ritonton/UniversalAnalogInput

Attachment
Attachment
Attachment
0
Ritonton

Shipped this project!

Hours: 89.86
Cookies: 🍪 2634
Multiplier: 29.31 cookies/hr

I built a big “feel + stability” upgrade for Universal Analog Input: low-level performance improvements in the mapping hot path, a safe global key-blocking hook to eliminate double-input, and new configurable input behaviors like Last Key Priority + Snap Stick 🎮⚙️

The hardest part was the low-level optimization work (making the loop faster without adding jitter or regressions), plus getting the WH_KEYBOARD_LL keyblocking hook safe and reliable 🧠. On top of that, the math/logic behind Last Key Priority and Snap Stick was trickier than it sounds with analog values, handling conflicts cleanly, avoiding weird “drop to zero” moments, and preventing jitter when magnitudes are close.

I’m proud I managed to grind this out during my 2-week vacation 😅. It’s a shame it’s over; I didn’t manage to do everything I wanted to, and I’ve still got work to do, but on the bright side: the end of Flavortown coincides with the end of my holidays and the start of a busy period in my studies.

Ritonton

Cool logo

29/04/26


Hey everyone! honestly one of my most productive sessions in a while 🤯.

First, I finished getting the Wooting Analog SDK upgrade properly production-ready. For The port to v0.9.1 I went checked the integration to make sure the SDK is bundled/loaded the right way, and that the init path + error handling are solid (so we don’t end up with vague “SDK missing” issues when it’s actually a loading/plugin problem a little sense of déjà vu 🫣) .

But most of my time went into RTSS overlay support!! The hardest part was simply: how do I use the RTSS API cleanly from Rust? I looked at existing options like RTSS-SYS (https://github.com/ShayBox/RTSS-SYS), but I don’t want UAI to depend long-term on an unmaintained low-level bindings crate, that’s exactly the kind of dependency that randomly breaks a year later and becomes a nightmare to debug. So I ended up copying the binding approach and doing all the FFI layer myself 😵‍💫.
On the Rust side, I set up a small RTSS module that:

  • dynamically opens the RTSS shared memory region,
  • defines the struct layout needed to read/write overlay entries (with explicit #[repr(C)] and careful sizes/alignments),
  • wraps it in a safe-ish API so the rest of the code doesn’t touch raw pointers everywhere,
  • and exposes a simple “update overlay text” function that I can call from the mapping side without dragging UI concerns into it.
    So at this point, the backend groundwork is there, UAI can talk to RTSS and update an overlay from Rust and show basic infos 🥳. Tomorrow I’ll hook it up to the app settings so the overlay can be configured directly from UAI (what to display, enable/disable, etc.) .
    https://github.com/Ritonton/UniversalAnalogInput
Attachment
Attachment
0
Ritonton

Cool logo

28/04/26


Hey everyone! Another big grind today 😮‍💨😮‍💨. I wrapped up the leftovers from the last big push, and then I jumped straight into building a brand new settings area so these new input features are actually configurable. With Flavortown ending in two days, I really wanted to get this across the finish line, and… yeah, it turned into a whole adventure 😢.

The first feature I finished is Last Key Priority. The goal is simple: if left+right (or up+down) are both active, the last pressed direction wins. But the devil is in the details when analog values are involved. I added logic to avoid that annoying “pre-threshold cancellation” feeling where you slightly touch the opposite direction and everything collapses to zero for a moment. I also introduced a “soft re-press” concept using LastKeyPrioritySensitivity: it lets the system treat a direction as “pressed again” when the analog value crosses a sensitivity threshold, so you can intentionally flip priority without having to fully release the other key.

Then I implemented Snap Stick, which is more aggressive: when there’s a conflict, the direction with the stronger analog magnitude wins, and if they’re equal it falls back to “last direction” so it doesn’t jitter. What made this really interesting is how it interacts with Last Key Priority: with both enabled, Snap Stick can keep a sort of “max magnitude” behavior, which makes direction changes feel way more punchy and decisive instead of mushy.

Honestly it was stressful because I kept finding edge cases where the behavior felt great in one scenario and wrong in another, so I spent a lot of time tweaking the rules and retesting until it felt consistent. But it’s done, it’s configurable. 🫡
Time to go to sleep 😪
https://github.com/Ritonton/UniversalAnalogInput

Attachment
0
Ritonton

Cool logo

27/04/26


Hey everyone! Today was a pretty intense one. I spent too much time fighting so much crash reports from my Sentry dashboard, and it was honestly repetitive and tiring - I’m at that point where my eyes hurt from staring at the screen for 7 hours straight😵‍💫… but I’ve definitely done worse.

The biggest thing I realized today isn’t even technical: I’ve been starting too many things at once because the event is ending and I wanted to squeeze everything in. And now I’m sitting on a huge amount of code that’s not production-ready, which is exactly how you end up shipping something unstable. So I’m switching to a more sequential approach: finish what’s already in progress, stabilize it, and only then move to the next feature.

On the actual progress side, I’m happy because I closed two big “core” items properly: the global key blocking is now finished (so bound keys can be swallowed and won’t leak into games as normal keyboard input), and the port to Wooting Analog SDK 0.9.1 is done too. I also stabilized the performance changes we talked about in previous devlogs, so the mapping loop feels consistent again instead of being in that awkward half-optimized state.

Not the most fun day, but it was a necessary one, and honestly, getting those foundations finished and stable is so satisfying.🫠
https://github.com/Ritonton/UniversalAnalogInput

Attachment
Attachment
0
Ritonton

Cool logo

27/04/26


Hey everyone! Small update from last night: I went back to the README and cleaned it up a bit.
The main task was to begin transitioning my pre-prod code to a version that I could actually release to the main public repository. I started reviewing the codebase and “productionizing” 🤷‍♂️: ensuring that all use cases are supported, verifying that everything is stable, run profiler, checking for memory leaks, and checking performance. 🤞
https://github.com/Ritonton/UniversalAnalogInput

Attachment
Attachment
0
Ritonton

Cool logo

26/04/26


Hey everyone! Back to work after a small break 😌, and this session was a mix of “boring but necessary” things and a couple of side experiments that could become really useful later.

Most of the time went into porting UAI to the new Wooting Analog SDK (they jumped from v0.8.0 to v0.9.1, so it’s not just a tiny bump). The main takeaway is that the SDK ecosystem changed a lot around 0.9.x: you can’t really rely on the old wrapper approach anymore, and the “distribution/bundling” story is stricter. On my side that meant revisiting the whole initialization path in the Rust core, especially the spot where everything starts in native/src/wooting/analog_sdk.rs with wooting_analog_initialise(), and checking what assumptions I’m making when I interpret error codes like NoPlugins vs DLLNotFound. I also had to trace every call site that depends on bulk polling (wooting_analog_read_full_buffer in the same file) to make sure the types/behaviour still match what the new version expects, because this function is basically the heart of the input hot path.

I also spent some time looking into how RTSS (Riva tuner statistic server the weird thing installed with MSI afterburner) overlays work, mainly from the “can I talk to it without doing something sketchy?” angle. I didn’t implement an overlay yet, but I started mapping out what data I’d want to expose (active profile, mapping state, maybe a small live analog value readout) and how that could be pushed in a lightweight way without touching rendering in-game. The goal would be: UAI provides a tiny stream of text/values, RTSS displays it, and that’s it.

Finally, I did a small POC for an auto-updater. Nothing production-ready yet, but I got the basic flow working: check “latest release” metadata, compare versions, download an installer/zip to a temp location, and hand off to a separate process so UAI can close cleanly before replacing files. It’s one of those features that looks simple until you remember Windows file locks exist, so I’m trying to keep the updater isolated and robust from the start.

That’s it for this devlog, not super flashy 🌟, but essential.
https://github.com/Ritonton/UniversalAnalogInput

Attachment
Attachment
0
Ritonton

Cool logo

24/04/26


Hey everyone! I pushed a bit further on the key-blocking work. I’m keeping it strict and safe (only when mapping is running, only for actually mapped keys, and ignoring injected events to avoid any weird loops).

For performance, I’ll keep it short, this is probably my last devlog of the week where I talk about it (and yeah… it’s already Friday 🥲😅). I mainly looked at the next simple step for consistency: bumping the mapping thread priority / MMCSS so the loop is less at the mercy of Windows scheduling when the PC is under load.

Also, Wooting released a big SDK update 😭 (v0.8.0 → v0.9.1), so I started reviewing what that upgrade might change for UAI (API changes, plugin behavior, and whether it affects initialization/error cases).
https://github.com/Ritonton/UniversalAnalogInput

Attachment
0
Ritonton

Cool logo

23/04/26


Hey everyone! Another long one yesterday, around 4h30, and it was mostly the kind of work that doesn’t look impressive from the outside but makes the project feel a lot more solid.

I started by turning the key-blocking POC into something that could realistically live inside UAI without being a “random experiment”. I cleaned up the hook logic a bit, made sure it only blocks keys that are actually bound, and added the safety rule to ignore injected events (so we don’t ever risk blocking our own output or creating weird loops). I also spent time thinking through the user-facing behavior: what should happen if the mapping is stopped, if the keyboard disconnects, or if the UI is closed, basically making sure “block bound keys” can’t accidentally leave someone with a half-broken keyboard until they reboot. A big part of the session was just testing and trying to reproduce edge cases, because global hooks are the type of feature that can go wrong in very scary ways if you’re not careful.

Then I went back to performance and tried to squeeze out a bit more stability in the mapping loop. I didn’t want to do a huge rewrite, so I focused on small wins: reducing unnecessary per-tick work, reusing allocations/buffers where possible, and preparing the ground for a “send only when something changes” approach to the virtual controller update. Most of the time wasn’t spent writing code, it was spent convincing myself that the changes wouldn’t introduce jitter, stalls, or random regressions when nothing is pressed.

Not the flashiest day, but I feel like it was an important one. See you in the next devlog!
I’ve also upgraded the layout of my devlogs 😉
https://github.com/Ritonton/UniversalAnalogInput

Attachment
Attachment
0
Ritonton

Hey everyone! I’m really locking in right now, it’s been 3 days in a row where I’ve been putting in at least around 4h a day on UAI, and yesterday I did a solid 5h30. It’s honestly a bit exhausting with studies on the side, but it also feels good because I’m finally pushing on the “real” hard problems instead of just polishing UI.

I started by building an actual POC for global key blocking, and it went better than I expected. The POC uses WH_KEYBOARD_LL, so it’s a true system-wide Windows hook: it sees every physical keyboard event before any app gets it. When a key that’s bound in UAI is pressed, the hook just returns 1 and the event is consumed, the result is kind of insane in the best way: the game literally never sees the keyboard input, so the double-input problem just disappears. I also did some research to make sure this wasn’t a “works until you launch a real game” type of trick, and it turns out none of the mainstream engines rely on RIDEV_NOLEGACY (which is basically the only clean way to bypass this hook). Unreal, Unity, Source, Godot, SDL2… they all end up using the usual paths (WM_KEYDOWN and/or Raw Input without that flag), so they all get blocked properly by the hook. I was initially worried about the 1% of weird cases (mostly rhythm games / very specific input stacks), and I thought I might need something extreme like an injected DLL to cover everything, but that would instantly raise anti-cheat flags, and ironically those are the games where the low-level hook already works perfectly anyway. So the conclusion is pretty clear: this POC is basically the optimal solution for UAI, and I don’t need to over-engineer it.

After that, I kept going on performance work. I’m still in the “careful” phase because anything in the mapping hot path is easy to break in subtle ways, but I started pushing real optimizations instead of just thinking about them. The core polling side is already efficient (bulk reads, minimal overhead), so my focus has been on smoothing the loop and cutting pointless work: reusing buffers more aggressively, reducing per-tick overhead, and moving toward a strategy where we don’t hammer the virtual controller update when nothing actually changed. It’s not fully done yet, and there were definitely a few moments where I felt stuck debugging timing/edge cases instead of making visible progress, but overall it feels like the project is getting more “serious”: less jitter, less waste, and a clearer path to both better responsiveness and stability.

That’s it for today, it was a lot, but I’m genuinely excited because the key blocking POC feels like one of those rare breakthroughs where a problem just… collapses into a clean solution. See you in the next devlog!

Attachment
0
Ritonton

Hey everyone! Quick devlog today: yesterday I spent about 1h30 digging into a potential way to globally block Windows keyboard events for keys that are bound in UAI. The idea would be to use a low-level keyboard hook (WH_KEYBOARD_LL) to read vkCode/scanCode, map that to a HID hint, and then conditionally “consume” the event so it never reaches games as normal keyboard input. The key detail is doing it safely: only when a “Block bound keys” setting is enabled, only if the key is actually mapped, and very importantly ignoring injected events so we don’t end up blocking our own output or causing weird loops. I didn’t ship this yet, but it feels like a real solution path to the classic double-input problem.

Then I spent the remaining ~3h30 starting to implement mapping engine optimizations. The core polling is already pretty efficient (single bulk read of the Wooting analog buffer), so I focused more on the loop itself: reducing avoidable per-frame overhead and making the cadence more stable. I started restructuring the hot path to reuse buffers more aggressively and prepare for a “send only when something changes” approach on the virtual controller side, instead of blindly pushing updates every tick. It’s not finished (and I don’t want to regress stability), but the direction is promising. See you in the next devlog!

Attachment
Attachment
0
Ritonton

Hey everyone! I thought this was going to be a quick win… and it turned into one of those annoying “but you DID install it” bugs: UAI claims it can’t find the Wooting SDK even when it’s already installed. I spent this session digging into the Rust side, mainly native/src/wooting/analog_sdk.rs, where everything starts with wooting_analog_initialise(), and I realized the problem isn’t just the failure itself, it’s how unclear the failure looks to users.

So I focused on making the SDK init path more helpful: distinguishing “the SDK DLL can’t be loaded at runtime” (DLLNotFound) from “the SDK loads but no plugins are detected” (NoPlugins), and improving the related logs/messages so people don’t get stuck in a useless reinstall loop. I also re-checked the edge cases where the SDK returns 0 keys and how the code later decides whether that’s just “no input” or an actual disconnect, because that silence is where a lot of confusion comes from.

Not a flashy feature, but it should make the app feel much more reliable and make future bug reports actually actionable. See you in the next devlog!

Attachment
0
Ritonton

Hey there, it’s in production!! After all the struggles. UAI v1.2 is making great strides despite my lack of time due to my studies.
Here’s a quick rundown of what’s new:
Added a live cursor on the curve page that follows the key you’re pressing. The dot moves along the curve in real time useful to actually see what a curve feels like before saving it.
The tray writes the Wooting analog buffer into a shared memory file at 120 Hz, and the UI reads it at 60 Hz. The tricky part was distinguishing “no keys pressed” from “stream off”, solved with a single byte in the shared memory that Rust sets explicitly on stop.
Also had to filter out the calibration noise Wooting keyboards emit at rest (small stagnant values that would show up as ghost keys), and handle the usual edge cases: keyboard disconnect, mapping stopped from the tray while the page is open, UI closed abruptly.

The stream is also a foundation for other UI features down the line live key highlighting, input monitoring, anything that needs to know what’s being pressed in real time.

For those who are voting, I know a 14h devlog isn’t ideal, but I promise you it’s justified here because it would have just been very repetitive devlogs with no real interest. Please don’t penalize me too much on the storytelling, I’m already putting so much effort into the project.

Commit 8c08fc0

0
Ritonton

I’m posting this devlog a little early for the “Lock-in” challenge. I’m still experimenting with the IPC; it’s a bit of a struggle, but I’m getting there!

Attachment
Attachment
0
Ritonton

Hi, this devlog will be a short one, as I’m saving the next one for the release of a rather handy but time-consuming feature that requires the implementation of a brand-new Inter-Process Communication system to stream analogue values to the UI at 120Hz. See you in the next devlog to find out why. Otherwise, I’ve also reworked the in-memory persistence of settings on the Rust side of my app for a small addition: an info notification about the app running in the background.

Attachment
Attachment
0
Ritonton

After all this time talking about it, I’ve finally released the source code for keyboard-sim! I’ll be working on the documentation and the binary soon.
So soon, anyone will be able to test UAI with or without the specialised hardware that analogue keyboards provide. This tool isn’t intended for use in-game; it’s just for testing my application or any applications that use the Wooting Analog SDK in general. I’m publishing it in UAI as a tool for now, but it might become a standalone application in the future.
There are two ways to use it. Either with the keyboard and the scroll wheel: hold down the keyboard keys you want to adjust and, at the same time, adjust their virtual analogue values using the mouse scroll wheel.
Or use it in mouse mode, where it’s actually the movement of the mouse on the desktop that adjusts the configured keys in the up, down, left and right directions.
This time, for the UI (for the sake of simplicity, rather than building a WinUI 3 interface using named pipes, events, mutexes, etc. to communicate with the Rust backend), I used and discovered Iced, which is really powerful for quickly creating a beautiful interface.
That’s all for this devlog – see you soon for the next update!
A little nod to VSCode for the green logo ;)
Commit c1b61f7
https://github.com/Ritonton/UniversalAnalogInput

Attachment
Attachment
Attachment
0
Ritonton

Shipped this project!

Hours: 36.67
Cookies: 🍪 1041
Multiplier: 28.39 cookies/hr

I built Universal Analog Input - a system that brings true analog control to standard keyboards.

The goal is simple: break the limitation of binary input and let keyboards behave more like controllers, unlocking smoother movement and more precise control in games.

The hardest part wasn’t just the concept, but making everything work reliably at a low level. Handling input in a consistent way across the stack, dealing with OS constraints, and fixing tricky issues like Windows mutex permissions (“Global\” vs “Local\”) pushed me deeper into system-level behavior than I expected.

Another challenge was credibility. Analog keyboards are still niche, so I needed a way to prove the app actually works. I built a testing mode using the Wooting SDK so anyone can validate the behavior - not for playing, but to make the system tangible and verifiable.

Along the way, I also improved the architecture, added crash reporting, refined the installer, and started building a proper UI with Iced.

What I’m most proud of is that this is no longer just a technical experiment. It’s becoming a real, usable piece of software with a purpose: bringing analog input to everyone, not just people with specialized hardware.

Ritonton

Hi, I’m posting this devlog a bit late, so it covers several recent stages of my project:
Firstly, I’ve created a nice welcome screen for my app.
And next, I’m working on a tool that allows those without access to a physical keyboard to test all the features of my app by using the Wooting Analog SDK in conjunction with the SDK’s test plugin. I’m experimenting with Iced for the UI, and it looks set to be a very good tool.
Right then, see you soon for the next update.

Attachment
Attachment
Attachment
Attachment
0
Ritonton

Hello, everyone!
It’s been a while, but because of my studies, I took a break from this project. However, I am back to add lots of great ideas that I have had.
I’ve been absent from the devlogs and activity on Flavortown, but I’ve still been working on the project here and there, mainly on bug reports and maintenance, and I’ve had my first GitHub issues! I also made a pull request on Analog Sense’s Universal Analog Plugin and tinkered with magnetic keyboards from other brands.
So this devlog ultimately summarises lots of little tasks on the project over almost two months, and it feels strange how quickly time flies.
I’ve attached lots of screenshots of some of the things I’ve been able to do.
I’m back for at least two weeks!

Attachment
Attachment
Attachment
Attachment
Attachment
0
Ritonton

I went in a completely different direction to avoid reading when the mouse is inactive and improve my reading performance, because previously, with battery readings every 300 seconds, the probability of this reading occurring while the mouse is active (moved less than 15 seconds before) is quite low during office work (mouse often on the side to access the keyboard). Now the app tracks mouse activity in a highly optimised way so that it only reads when there is movement or waits for movement to read.
It took a long time to find the right way to do this, because there are many ways and each has its advantages and disadvantages. In the end, I went with this option: We track activity with the WM_INPUT hook. WM_INPUT cannot read activity if the foreground app is running as an administrator, which is why I also use cursor position variation as a fallback.
In short, it’s coming together nicely in an app that will soon be finished. I’m going to start working on the release repo. I prefer to work with release repos and publish in one big commit because it’s cleaner during POC and testing periods… and I have my personal repo for developing version 1 of the product!

Attachment
0
Ritonton

It now supports when the mouse is sleeping and it is now integrated with the windows notification system to alert the user also when the battery drop below 20% it starts notifying at 10%, 5%, and when near shutdown.

Attachment
0
Ritonton

The tray app is now operational and displays the battery status in the tooltip. I exported the Fluent icons for the battery indicator from the Microsoft repository, and in the next devlog, I will ensure that the status bar icon changes dynamically based on the battery level and mouse status (normal, inactive, and charging).
WIP

Attachment
Attachment
0
Ritonton

First devlog!
So far, I’ve finished the part that connects the mouse with hidapi. I reverse-engineered the Scyrox web configurator by unminifying their main js file and transposed the battery percentage calculation logic into Rust using smoothed voltage interpolation. It handles the mouse’s sleep state and issues alerts when it is asleep, charging, or below 20%. What I have left to do now is call the Windows notification system to display them before moving on to integration into the windows’s system tray.

Attachment
0
Ritonton

Merge of UniversalAnalogInput release repo time with universa-analog-input private repo time.
I didn’t know how to do this, so I’m only doing it now, but you can select multiple Wakatime projects in a single Flavortown project. I needed this because I couldn’t record the time I spent on my release repository.

Attachment
0
Ritonton

I am spending some time on the Rust core of my application in order to implement a way for users who do not have an analogue keyboard to test the analogue capabilities of the UAI. All they will need to do is press a key on the keyboard while scrolling with the mouse. The application will need to be launched in a special mode. This will enable shipwrights to easily test my application for future ship.
WIP
mouse icon by flaticon

Attachment
0
Ritonton

I finaly fixed the critical tray instance check failure (0x80070005 - Access Denied) that appeared on my Sentry dashboard in a previous devlog. The issue was caused by using “Global\” namespace for Windows mutexes, which requires admin privileges on Windows 10/11. Fixed by switching to “Local\” namespace in both Rust tray and C# UI and it now works perfectly with normal user permissions.
As always, three simple constants to change for hours of debugging and a significant problem fixed.
I will incorporate this fix into the next version 1.0.2 of my application, along with other bug fixes. For now, it will still be present in release version 1.0.1. You simply will not be able to open the application twice in two different user sessions on Windows for now.
Commit 2b16a61
https://github.com/Ritonton/UniversalAnalogInput

Attachment
0
Ritonton

Debugging critical tray instance check failure (0x80070005 - Access Denied) that appeared on my sentry dashboard.
Exploring the Global namespace mutex permissions seems to be the culprit since CreateMutexW fails with global scope.
Haven’t found the fix yet, but narrowed it down to Windows API security context !
In the meantime, I am working on a nice animation in Rive with Figma models I made for my readme file to better show the purpose of my application in games.
WIP :)

Attachment
0
Ritonton

v1.0.1 - Sentry integration

I’ve added Sentry for automatic crash reporting to help catch bugs faster.
Reports are on by default but you can easily disable them in the .env file if you prefer.

I’ve also added proper legal docs: Privacy Policy, Terms of Service, and a Data Processing Agreement.
Everything’s in the installer and on GitHub. GDPR compliant.

Commit 2ab7600
https://github.com/Ritonton/UniversalAnalogInput

Attachment
Attachment
0
Ritonton

I finished the v1 of my app

Attachment
Attachment
4

Comments

The Outlier
The Outlier 3 months ago

This project is awesome! I had an idea to bring back the retro feel of consoles like the PS2. We could build an adapter that takes the original data output from the console and converts it to USB for a laptop. Then, we create an app that translates that data so we can play classic games using the actual vintage setup. It’s basically a bridge between old-school hardware and modern screens, so we get that nostalgic ‘retro’ vibe without needing an old TV!
ur idea is very good but unfortunately i cant use ur app coz i don;t have a analog keyboard .

Trejos_1
Trejos_1 3 months ago

This project is very original and addresses that feeling of playing on a keyboard in a unique way. I’ll try it out in my games :D

stormzzyyne
stormzzyyne 3 months ago

Cool project, i think i’ve seen something like this before but gotta say this is a better implementation and overall a better experience, keep it up!

leethana
leethana 3 months ago

great ui!