porg
Active Member
EvilDragon said:You're all forgetting one thing: This is a multitasking OS. As soon as one program changes the mapping, it will be changed for ALL programs. Or the programs constantly switch around, which is even worse.
@EvilDragon and other PandoraOS devs,
I have a suggestion how to realize increased user configurability and at the same time avoid a mess within the multitasking system, as you fear it!
Functional scheme as is (plus the suggestion):
Code:
1 Hardware -> 2 OS/driver -> (3 VirtualControllerSwitch) -> 4 final app receives the passthrough/manipulated controller event.
Ad 3: The problem can be solved here, with a VirtualControllerSwitch. Either such a software already exists on GNU/Linux or else it could be developed.
Ad 2+3: In the PandoraOS 2+3 could be easily melted, as it is a custom OS, but nevertheless I propose to keep them separated so that:
- alternative VirtualControllerSwitches can be used if desired,
- the (to be integrated/developed) default VirtualControllerSwitch could possibly also be utilized if people use the Pandora with other OSes, such as Android, Ubuntu, of course within the given boundaries.
Ad 3: We don't have to reinvent the wheel. The concept is very well implemented by: ControllerMate
I bought this shareware for my Mac to realize a sort of "game emulation center" user mode on my Mac, where I can control EVERYTHING relevant ENTIRELY with my wireless game controller!
- Browse and launch games (in the launcher EmuLaunch ).
- Quit games (different keystrokes in the different apps hence a global mapping would fail) and switch back to the launcher.
- Emulator general game control: custom button mapping if emulator forces you to button setup you don't like, map game controller buttons to key(stroke)s if it can't handle game controllers, assisting (some would rather call it 'cheating' *LOL*) functions such as button combinations/sequences, permanent fire trigger, etc.
- Emulator specific features such as: game status freeze, machine reset, etc.
- Everything else you need (as you can trigger commandline/scripts)
ControllerMate has a pretty clever approach, which allows almost every configuration while only affecting the apps you want! You can read the concept in detail at the website, for those with limited reading time, I try a short summary here (my terminology may vary):
- The root layer contains groups(s). The root layer can be switched off without rebooting, then all signals are simply passed through, may be necessary for troubleshooting.
- A group contains page(s). Group(s) can be switched on/off as desired.
- Page(s) contain the hardware controllers' (internal keyboard, wired controller, wireless controller, etc) features (buttons, nubs, ...) as you like, either you place them partially or all of them!
- A trigger event goes through signal processing (logic, math, value filter, repeater, delayer, etc) into an output.
- An output can be a single/multiple/sequence of buttons/keys or triggering a script, possibly with the value as an argument.
- Always / If app "Xxx*" is running / If app "Xxx*" is not running
- You can list multiple apps, and again define that the rule only applies if app "Xxx*" runs in the foreground / background / however.
Summary of the cons: Has to continuously run, hence consumes some system resources, but I guess this can be made quite efficient.
Summary of the pros: By this you can create both global controller-manipulations, which are expected to have the intended effect in the entire OS and all apps, and at the same time app-specific controller-manipulations, avoiding unintended effects for other apps! And the handy thing is that the apps can be defined in/exclusive, and wether they run in front/back/anyhow. Very flexible, solving almost every conceivable controller issues and demands! (Solved 100% of my issues!)
Last edited by a moderator: