PersonalConsole — User Guide

How to use PersonalConsole, screen by screen.
This guide answers "what is this screen for, and how do I do X". It does not repeat what is already written elsewhere:
  • Installing it, what it needs, where your files are kept, known limitations → RELEASE-README.md
  • What changed in a version → PersonalConsole/docs/RELEASE-NOTES.md
  • Why it needs administrator, and why you can trust the build → SECURITY.md
Everything below describes the product as it is now — there are no version numbers here on purpose. If something does not match what you see, the guide is wrong and should be fixed.
Screens referenced as main/profiles.png live in PersonalConsole/screenshots/ui/.

1. What this is

PersonalConsole turns a Windows PC into something you can drive from the couch with a game controller. It does three things:
  • Translates your controller into keyboard and mouse input, per application, so a program that never supported a pad can still be driven by one.
  • Replaces the Windows desktop with a full-screen, controller-friendly one.
  • Gives you a Virtual Keyboard, radial menus and a file browser you can use without a mouse.

2. The main window

The left sidebar is the whole app. Five sections:
SectionWhat it is for
Profiles & TemplatesWhich controller setup applies to which program
Controller MappingWhat each button does
Virtual KeyboardThe Virtual Keyboard's look, languages, dictionaries and saved sign-ins
Console ModeThe full-screen desktop, its tabs, and the built-in file browser
PreferencesStartup, controller detection, appearance, themes, updates
At the bottom: Minimize and Exit.
Minimize puts the window away and leaves the app running — the controller keeps working. Where it goes depends on one setting:
System Tray Behavior (Preferences → System)What Minimize does
Off (default)An ordinary minimised window on the taskbar
OnThe window is hidden entirely and only the tray icon is left
Either way the tray icon brings it back.
Getting around with the controller: LB / RB change section, LT / RT change the tab inside a section. The hints are printed at the bottom-left and change with the screen. Mouse and keyboard work everywhere too.

3. Profiles

A profile is a full set of button mappings plus the program it belongs to. PersonalConsole switches profiles by itself: when a program you have a profile for comes to the foreground, its mappings take over. If a program has no profile, the Desktop profile applies.
main/profiles.png

The two built-in profiles

Two profiles always exist and are pinned to the top of the list. They are not examples you can replace — the app relies on them, which is why neither can be renamed or deleted.

Desktop

The fallback. It applies whenever nothing more specific does — you are on the Windows desktop, or in a program that has no profile of its own. This is the profile to set up first, because it is the one you will spend most of your time in: it is where you want the sticks driving the mouse, a button opening the Virtual Keyboard, and so on.
It is also the profile the app forces in three situations:
  • Emergency Desktop Mode — the combination from that tab drops you back here from anywhere, which is the whole point of it (section 3, Emergency Desktop Mode).
  • While a file picker or other system dialog opened by PersonalConsole is on screen — that dialog belongs to the app rather than to your game, so no game profile could sensibly apply. Desktop keeps the pad driving the mouse and buttons inside it.
  • When a program's name cannot be read — an elevated process, for example. Rather than guess, the app falls back here and notes it in the log.

Virtual Keyboard

Active whenever a Virtual Keyboard is open, whatever is in the foreground. It outranks every other profile, including the one for the game you are playing.
That is deliberate: while you are typing, the pad has to drive the keyboard, not the game underneath. Without it, the same stick would move a cursor and a character at once. The profile is what makes the keys, the prediction row and the close button reachable.
Map here anything you want available while typing — closing the keyboard, switching language, moving the caret. Bindings you put in a game's own profile are not in effect during that time.
📌 So the order of precedence is: Virtual Keyboard open → its profile · a system dialog or the emergency combo → Desktop · otherwise → the profile matching the foreground program · nothing matches → Desktop.

Creating one

  1. Open Profiles & Templates → Profile.
  2. Press + Add Profile under the list.
  3. Set Target Executable (.exe) — Browse .exe to pick the program, or Recent Apps to choose one you have used recently.
  4. Optionally set Controller if the profile should only apply to one specific pad. The default, Any controller, applies to whichever pad is connected.
    main/profiles__devices-expanded.png
The line under the box — "Activates automatically while the target window is in the foreground" — is the whole rule.

Editing and deleting

Click a profile's card again while it is already selected: a small Profile Options panel appears over the list with Edit Profile.
main/profiles__popup-profileoptions.png
⚠️ Built-in profiles (Desktop, Virtual Keyboard) cannot be renamed or deleted. The panel says so.
⚠️ Deleting a profile is permanent, and it is a hold button — keep it pressed until the bar fills. Letting go early cancels, which is the point.

Emergency Desktop Mode

main/profiles-emergency.png
If a game's mapping ever leaves you stuck, this combination force-switches back to the Desktop profile system-wide. Two dropdowns: the combination itself and how long it must be held. Set them to something no game will use by accident.

Templates

main/profiles-templates.png
Export Template writes your mappings to a file; Import Template loads one. Four toggles pick what a template carries, so you can move only the parts you want to another PC.

4. Mapping a button

Open Controller Mapping. The tab strip selects which part of the pad you are working on: Device Layout, Actions, Menu, D-Pad, Bumpers & Triggers, Left Stick, Right Stick, Combos.
Device Layout is a picture of your controller with every binding drawn next to the button it belongs to — the fastest way to see what is already assigned. Assigned buttons stay highlighted.
main/mapping-device-layout.png

The steps

  1. Select the button — on Device Layout, or from one of the other tabs.
  2. The editor opens full screen. Its top-left corner names exactly what you are editing: the button's own glyph, the profile, and the layout.
    mapping/single-tap__fullscreen.png
  3. Pick the slot on the left — Single Tap, Double Tap, Hold, Release. One button can carry a different action in each of the four.
  4. Pick a category, then the action inside it.
  5. Press B (Apply & Close), or Esc.

The categories

CategoryWhat you getScreen
Keyboard KeyA full QWERTY picker, plus Win / Alt modifier keysmapping/single-tap__keyboard-key.png
Mouse ControlClicks, scroll and movementmapping/single-tap__mouse-control.png
Virtual KeyboardOpen the Realtime or Buffer keyboard, or Close Keyboardmapping/single-tap__virtual-keyboard.png
Radial MenuOpen one of your menusmapping/single-tap__radial-menu.png
LayoutsSwitch to another layout, with Hold / Toggle / One-Waymapping/single-tap__layouts.png
Windows ActionsClose App (Alt+F4), Show Desktop (Win+D), Task Manager, Window Switcher, plus Shell and Media groupsmapping/single-tap__windows-actions.png
One slot can hold more than one thing at once — a keyboard key and a mouse click assigned to the same slot are sent together on the same press.

Slot-specific controls

  • Double Tap adds a Double Tap Speed slider — how fast the second press must come.
    mapping/double-tap.png
  • Hold adds a Hold Threshold slider — how long the button must be held.
    mapping/hold.png
  • Release is the plainest slot: it fires when you let go.
    mapping/release.png

Clearing

The Clear button at the bottom names the slot it will clear — Clear Single Tap — so it can only affect the slot you are looking at.

Turbo and rumble

On the editor's Button tab:
  • Enable Turbo (Repeat) auto-repeats while held. Repeat Delay sets the rate and Enable Acceleration speeds it up the longer you hold.
  • Enable Rumble vibrates when the button fires: Single, Ascending or Descending.

Sticks and the D-Pad

Under the Device Layout picture, three dropdowns set what the sticks and D-Pad do as a whole: Mouse, Scroll or None. The gear button beside each opens its detailed settings (sensitivity, deadzone, acceleration).
⚠️ When a stick or the D-Pad is set to anything other than None, its four directions are taken over by that behaviour and show as locked in Device Layout — you cannot also bind them individually. Set it back to None and the bindings you had are still there. The stick click (L3 / R3) is not a direction and stays bindable either way.

Combos

main/mapping-combos.png
— bind an action to two buttons pressed together. The tab starts empty until you add one.

5. Layouts

Each profile has eight layouts, numbered 1–8 on the strip at the top of Controller Mapping. A layout is a complete set of bindings, so one profile can hold eight control schemes.
You switch layouts at run time by binding the Layouts action to a button. It works in three ways:
ModeBehaviour
HoldThe layout applies only while the button is held
TogglePress to switch, press again to switch back
One-WaySwitch and stay
The editor always names the layout you are editing in its top-left corner. This matters more than it sounds: a binding placed on layout 3 does nothing while layout 1 is active, and that is the most common reason a new mapping "does not work".

6. Radial menus

A radial menu is a wheel of actions you open with one button and pick from with the stick.
🔑 Menus are shared across profiles. The menu itself belongs to you, not to one program. What belongs to a profile is the binding — which button opens which menu. So a menu you build once is available everywhere, and you can open it from a different button in each game.
Open the editor with Open Radial Menu Editor at the bottom of Controller Mapping.
radial/empty.png
(nothing selected) · radial/menu-selected__fullscreen.png (a menu open)

Building one

  1. Press + Add Menu. It appears in the list on the left with its item count under the name.
  2. Set Menu Name at the top.
  3. Press + Add Button for each entry. Every entry has:
    • Button Name — what it is called
    • Colour and Symbol — how it looks on the wheel
    • Show as — symbol only, or symbol and text
    • Assign Action — what it does when picked
    • ✕ — remove the entry
  4. Use the ▲ / ▼ arrows on a row to change the order entries appear on the wheel.
  5. Press B (Apply & Close).
Menu Settings ▼ expands in place for the menu's own options.
radial/menu-selected__settings-expanded.png
⚠️ Delete Menu removes the whole menu and cannot be undone.

Opening one

Map a button to the Radial Menu category (section 4) and pick the menu. A menu entry can itself open another menu, so menus can nest.
LB / RB move between menus while the editor is open.

7. The Virtual Keyboard

There are exactly two Virtual Keyboards, and the difference is where your typing goes:
Realtime KeyboardBuffer Keyboard
Keys gostraight to whatever is focused, as you press theminto the keyboard's own text box first
The program underneathkeeps runningis held still while you type
Text arrivesimmediatelywhen you close the keyboard
Use it fordesktop apps, browsers, chatgames that would react to the pad while you type
You open either one by mapping it to a button (section 4, Virtual Keyboard category). The same category has Close Keyboard, so you can bind a dedicated close button.

The prediction row — four buttons

mapping/single-tap__virtual-keyboard.png
Above the keys sit four buttons: three suggestions and one add-to-dictionary slot.
ButtonWhat it holds
1st (left)Second-best suggestion
2nd (middle)🔑 The best suggestion
3rd (right)Third-best suggestion
4th+ "word" — adds what you typed to your dictionary
🔑 The best match is the MIDDLE button, not the first. The three suggestion slots fill centre-out — best to the middle, then left, then right — the way phone keyboards do it, because the middle is where your thumb already is.
The 4th button is separate on purpose: adding an unknown word used to consume the third suggestion, so you had to choose between a suggestion and teaching the keyboard. Now you get both. It appears only when what you typed is not already a known word, and it shows the word in quotes so you can see exactly what will be stored.
Suggestions keep your capitalisation. Type Wed and pick the suggestion and you get Wednesday, not wednesday. Only the part you actually typed is re-cased; the rest stays exactly as the dictionary has it, so words with capitals inside them — iPhone, eBay — survive being completed. Nothing is blanket-uppercased, which is also what keeps alphabets with dotted and dotless letters correct.

Where the files live

ButtonFolderHolds
Open Language FolderDocuments\PersonalConsole\Shared\VirtualKeyboardLanguagesOne .json per keyboard layout
Open Dictionary FolderDocuments\PersonalConsole\Shared\VirtualKeyboardDictionariesOne .json per language's words
They open in the built-in file browser (section 9). Both are in the Shared folder, so they travel with the rest of your settings rather than being tied to one machine.

Creating a language file

A language file describes what each key prints. It is a plain JSON file:
{ "LanguageCode": "DE", "Base":  ["^", "1", "2", "…", "z", "x", "c", "v", "b", "n", "m", ",", ".", "-"], "Shift": ["°", "!", """, "…", "Z", "X", "C", "V", "B", "N", "M", ";", ":", "_"], "Caps":  ["^", "1", "2", "…", "Z", "X", "C", "V", "B", "N", "M", ",", ".", "-"], "Sym":   ["`", "1", "2", "…", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/"] }

The rules:

  1. LanguageCode decides the code, not the file name. The keyboard shows this value, uppercased. Two files with the same LanguageCode will collide.
  2. Each layer is 47 entries, in this fixed order — the standard QWERTY block, left to right, top to bottom:
    RowCountPositions
    113` 1 2 3 4 5 6 7 8 9 0 - =
    213q w e r t y u i o p [ ] \
    311a s d f g h j k l ; '
    410z x c v b n m , . /
  3. Only Base is required. Shift, Caps and Sym are optional.
  4. Layers are what the modifier keys show: Shift while Shift is held, Caps while Caps Lock is on, Sym when you press SYM.

Creating or editing a dictionary

A dictionary file holds the words for one language, named with the same code — EN.json, TR.json:
{ "Version": 1, "WordsVersion": 2, "Seeded": false, "Words":     ["the", "be", "to", "of", "and"], "UserWords": ["gamepad", "roguelike"], "Pairs":     { "hello": { "everyone": 3 }, "project": { "diablo": 2 } } }
FieldWhat it is
WordsThe shipped word list for that language
UserWordsWords you added with the 4th prediction button
PairsNext-word memory: previous → { next: count }. The count is how often you did it.

8. Console Desktop

Console Mode replaces the Windows desktop with a full-screen one built for a controller. 📸 No catalog frame yet. The desktop only comes forward when no ordinary application window owns the screen, which is deliberate.

Turning it on

main/console-shell.png
SettingWhat it does
Enable Console Mode OverlayReplaces the Windows desktop with the gamepad-driven one
Auto Hide/Show on InputHides it the moment you use the mouse or keyboard, brings it back on gamepad input
🔑 Auto Hide/Show is what lets you share the PC with a normal desktop session — touch the mouse and the console desktop steps aside; pick the pad back up and it returns.
🔑 It never steals focus from a window you are using.

9. File Explorer

A controller-driven file browser. It opens when you open a folder from inside the app.
ButtonAction
AOpen the selected item
BBack — hold to exit the window
XActions menu

10. Appearance and themes

main/prefs-theme.png
· main/prefs-theme__scope-strip.png
Preferences → Theme is where the look is chosen.

Scopes

The strip at the top has three scopes — Main Application, Virtual Keyboard and Console Desktop — and under each it prints the theme that scope currently uses. They are independent.

11. Controller reference

Every control in this app can be reached with the controller, the mouse and the keyboard.
ButtonIn the app's windowsIn a radial menuIn File Explorer
ASelect / activatePick the highlighted entryOpen
BBack; closes the innermost thing that is openClose the menuBack (hold to exit)
X——Actions menu
LB / RBChange section——
LT / RTChange tab—Switch view

12. If something goes wrong

The taskbar looks dead after the app was force-closed.
Console Mode hides the Windows taskbar while it owns the screen and hands it back when the app exits normally. Killing it from Task Manager skips that hand-back. Start PersonalConsole again and exit it properly, and the taskbar comes back.
A game does not react to the controller.
The active profile follows the foreground window; a program with no profile of its own gets the Desktop profile. Use the Emergency Desktop Mode combination to force your way back, then give the game its own profile.
Menus work but games do not, or the other way round.
See Preferences → Controller. If a game only reads XInput and your pad is in DInput mode, turn on Virtual Controller Output so the game sees a stand-in controller.
I want to report something.
Preferences → System → Open log folder opens the logs. They record what the app did and never contain passwords or usernames.