Skip to content

Commit

Permalink
Additional documentation and reorganization of Config.h to correspond…
Browse files Browse the repository at this point in the history
… to the order in README.md
  • Loading branch information
Brunni132 committed Aug 7, 2024
1 parent f68567f commit c02ce29
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 46 deletions.
69 changes: 35 additions & 34 deletions Code/Config.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,64 +10,65 @@ struct Config: public RefClass {
std::vector<std::string> errors;
// The right control key becomes the context menu key
//bool rightCtrlContextMenu;
// Toggle hidden folder view in explorer by pressing Ctrl+H
bool toggleHideFolders;
// Start screensaver using Insert key
bool startScreenSaverWithInsert;
// Enables smoother, logarithmic volume control (necessary if the keyboard has volume control)
bool smoothVolumeControl;
// For a single press, uses this value; for a press with Ctrl, does it 4x
float volumeIncrementQuantity;
bool closeWindowWithWinQ;
bool winHHidesWindow;
float scrollAccelerationFactor;
int scrollAccelerationIntertia;
float scrollAccelerationMaxScrollFactor;
bool scrollAccelerationSendMultipleMessages;
// If nonzero, ignores all scroll events that are not equal to this. Typically 120.
int scrollAccelerationBaseValue;
bool altTabWithMouseButtons;
// Brightness control if a monitor supporting DDC/CI is connected using Ctrl+Win+Left/Right
bool ddcCiBrightnessControl;
int brightnessIncrementQuantity;
// Set this to true to reapply the gamma curve even when changing the brightness only (i.e. brightness >= 0)
bool forceReapplyGammaOnBrightnessChange;
// Keep the current brightness in cache for the following duration before rereading it (milliseconds)
long brightnessCacheDuration;
// Set that to true on a Mac, it will use a logarithmic scale ofr the brightness setting.
bool wmiLogarithmicBrightness;
int brightnessIncrementQuantity;
// If false, just doesn't touch the gamma curve (unless you have useCustomGammaCurve)
bool allowNegativeBrightness;
// in milliseconds; 0 = disable
int autoApplyGammaCurveDelay;
// Enables smoother, logarithmic volume control (necessary if the keyboard has volume control)
bool smoothVolumeControl;
// For a single press, uses this value; for a press with Ctrl, does it 4x
float volumeIncrementQuantity;
// Ctrl+Win+Home: stop, End: play/pause, PgUp: previous, PgDn: next, Up: vol+, Down: vol-
bool useSoftMediaKeys;
// Set this to true to reapply the gamma curve even when changing the brightness only (i.e. brightness >= 0)
bool forceReapplyGammaOnBrightnessChange;
bool multiDesktopLikeApplicationSwitcher;
// Uses LWin+[0-9] instead of Ctrl+[num0-num9] to switch tasks
bool noNumPad;
bool reloadConfigWithCtrlWinR;
// Mac specifics
// Eat accidental left/right presses after home/end on Mac
bool iAmAMac;
bool multiDesktopLikeApplicationSwitcher;
bool winFOpensYourFiles;
bool winHHidesWindow;
// Uses LWin+[0-9] instead of Ctrl+[num0-num9] to switch tasks
bool noNumPad;
// Also bring the context menu when pressing on Right Shift
bool rightShiftContextMenu;
// Keep the current brightness in cache for the following duration before rereading it (milliseconds)
long brightnessCacheDuration;
bool closeWindowWithWinQ;
bool altGraveToStickyAltTab;
bool winFOpensYourFiles;
bool winTSelectsLastTask;
int winTTaskMoveBy;
bool altTabWithMouseButtons;
// Sends Ctrl+Caps after Win+Space
bool selectHiraganaByDefault;
bool japaneseMacBookPro;
bool japaneseMacKeyboard;
bool japaneseWindowsKeyboard;
bool winSSuspendsSystem;
bool doNotUseWinSpace;
bool internationalUsKeyboardForFrench;
bool processAltTabWithMouseButtonsEvenFromRdp;
// Toggle hidden folder view in explorer by pressing Ctrl+H
bool toggleHideFolders;
// Start screensaver using Insert key
bool startScreenSaverWithInsert;
bool altGraveToStickyAltTab;
// If set, doesn't use the current gamma curve as a base, but always resets it
bool resetDefaultGammaCurve;
float scrollAccelerationFactor;
int scrollAccelerationIntertia;
float scrollAccelerationMaxScrollFactor;
bool scrollAccelerationSendMultipleMessages;
// If nonzero, ignores all scroll events that are not equal to this. Typically 120.
int scrollAccelerationBaseValue;
bool capsPageControls;

// in milliseconds; 0 = disable
int autoApplyGammaCurveDelay;
bool japaneseMacBookPro;
bool japaneseMacKeyboard;
bool japaneseWindowsKeyboard;
bool disableCapsLock;
bool processAltTabWithMouseButtonsEvenFromRdp;
bool capsPageControls;
bool mediaKeysWithCapsLockFnKeys, mediaKeysWithCapsLockSpaceArrow;

// Reload the values from the config file. Will affect all members of this instance. Must be called at least once before use of the instance.
Expand Down
29 changes: 17 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ This tool focuses on very basic functionality that is usually not covered by oth
- `scrollAccelerationIntertia`: this sets the scroll rate necessary to accelerate the scrolling. The smaller the value, the less you'll see acceleration, and the quicker it will stop once you release it. You can build momentum by scrolling repeatedly with a higher value (> 50).
- `scrollAccelerationMaxScrollFactor`: limits the maximum scrolling rate.
- `scrollAccelerationSendMultipleMessages`: by default it uses the precise scrolling as offered by Windows, but you may set this to true to simulate an accelerated scroll by multiple simple scroll actions.
- `scrollAccelerationDismissTrackpad`: when set to true, dismisses any "precise" device (i.e. not having a fixed wheel delta, like gaming mice). Try setting this to false if it doesn't work.
- `altTabWithMouseButtons`: press the forward button on your mouse to open the app selector. Press for longer (200ms or more) to do a standard forward command.
- `ddcCiBrightnessControl`: enables controlling the brightness of your screen through Ctrl+Win+F9 and F10. It can be used either for your internal panel (possibly replacing the manufacturer tool if it proves to be badly designed or a resource hog like often), either for your external screen. The screen affected by this command is the one on which the active window is. Note that this won't work on a TV since the DDC/CI protocol is not supported. It will work on most monitors though, but you might have to enable the DDC/CI option somewhere from the OSD to enable for that. Try it if the brightness is stuck to 0.
- Shift can be held to make smaller increments.
Expand All @@ -38,20 +37,20 @@ This tool focuses on very basic functionality that is usually not covered by oth
- 7: select 31st item
- Note that Home and End are provided by the system to move to the first or last task. You may as well use a directional key to wrap around the last entry and select the first entry easily (for example if your taskbar is at the bottom, press Right once).
- You can use PgUp and PgDn keys to move by increments of `winTTaskMoveBy` (default 4) icons in the taskbar.
- `disableWinTabAnimation`: when pressing Win+Tab (and not using another combination, such as swiping up with three/four fingers on your precision touchpad) the Task View appears without animation. Huge hack as it is, it actually removes animations then calls the Task View screen, then periodically checks that it is still active; when it's not it reenables animations. Note that this is done in a safe way, i.e. not persisted to your user profile.
- `disableWinTabAnimation` (removed, but still commented out in the source code): when pressing Win+Tab (and not using another combination, such as swiping up with three/four fingers on your precision touchpad) the Task View appears without animation. Huge hack as it is, it actually removes animations then calls the Task View screen, then periodically checks that it is still active; when it's not it reenables animations. Note that this is done in a safe way, i.e. not persisted to your user profile.
- `selectHiraganaByDefault`: if set, when switching between languages with Win+Space, sends a Ctrl+Caps right behind so that hiragana mode is enabled if IME is japanese (for others doesn't do anything; for other complex IME you may not want to use this feature as it's tailored for Japanese and doesn't have a way to check what you're currently using).
- `winSSuspendsSystem`: suspends Windows by pressing Win+S.
- `doNotUseWinSpace`: replaces Win+Space by Alt+Shift, the shortcut from older Windows versions. The advantage of Alt+Shift is that it switches only between the two last languages, where Win+Space goes to the next on the list, which is often unwanted especially since Windows sometimes temporarily adds unrelated languages during updates until a reboot.
- `internationalUsKeyboardForFrench`: enables easy access to latin-international characters on top of an English (US) keyboard. Aimed at coders, and in its current implementation for French-speakers by providing a couple of shortcuts for mostly used accented characters. Useful since the MS KLC is not really supported anymore and doesn't create touch keyboards. It does this:
- Right Alt + E = é (or É with Shift when pressing E)
- Right Alt + C = ç
- Right Alt + A = à
- Right Alt + U = ` (dead key; then press another key like A to get à, E to get è, etc. or space to insert the ` char)
- Right Alt + I = ^ (dead key; A=â, E=ê, I=î, O=ô, U=û, space=^)
- Right Alt + O = ¨ (dead key; A=ä, E=ë, I=ï, O=ö, U=ü, space=¨)
- Right Alt + P = ´ (dead key; A=á, E=é, I=í, O=ó, U=ú, space=´)
- Right Alt + N = ~ (dead key; N=ñ, space=~)
- Right Alt + ; (semi-colon) = … (horizontal ellipsis)
- Right Alt + E = (or with Shift when pressing E)
- Right Alt + C =
- Right Alt + A =
- Right Alt + U = ` (dead key; then press another key like A to get , E to get , etc. or space to insert the ` char)
- Right Alt + I = ^ (dead key; A=, E=, I=, O=, U=, space=^)
- Right Alt + O = (dead key; A=, E=, I=, O=, U=, space=)
- Right Alt + P = (dead key; A=, E=, I=, O=, U=, space=)
- Right Alt + N = ~ (dead key; N=, space=~)
- Right Alt + ; (semi-colon) = (horizontal ellipsis)
- Note that you may create your own layouts or customize it. Look at layoutTranslatorsRegister.
- `processAltTabWithMouseButtonsEvenFromRdp`: set to true if you are using RDP, and your host does not use the RoxxorTool (ex. it is a Mac). Since the RoxxorTool is given mouse input (but not keyboard) coming from the RDP client app and processes it, translating for instance the mouse button to Alt Tab, by default, the RoxxorTool will not process mouse events on the RDP host, to avoid conflicts. If you don't have the RoxxorTool on your host though, this will prevent the functionality from working. In the future, I might come with a better solution (i.e. detecting where the mouse click came from, or avoid processing them from the RDP client app).

Expand All @@ -62,7 +61,13 @@ Additional (not as good, please shout out if you use them else I might remove th
- `altGraveToStickyAltTab`: frankly this shouldn't be there, it only works on European and American keyboards, but yeah, you may use the Alt key + grave accent (which should be located right above the Tab key, on the leftmost corner) to bring the Alt+Tab menu and keep it open until you click elsewhere or press Escape. There is no magic behind this as the system already does that with Ctrl+Alt+Tab, but since I'm using it a lot I wanted to give it a dedicated key. But the `altTabWithMouseButtons` is much better in practice.
-> I recommend tuning the options of your Alt+Tab view, especially if you've been used to non-Windows DEs. I make the icons bigger by tuning the registry under `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MultitaskingView\AltTabViewHost`, setting `Thumbnail_icon_size` to 00000030(hex), `Thumbnail_max_height_percent` to 00000010 and `Thumbnail_min_height_percent` to 00000010. See [this topic](https://answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_personal/registry-customization-for-multitaskingview-mtv/806a0c84-b203-46fb-b23a-acc82dc0ecce) for more info.
- `resetDefaultGammaCurve`: does not take the current gamma curve in account when lowering the brightness below 0%. Not recommended, unless you know why you need this.

- `autoApplyGammaCurveDelay`: reapply the gamma curve (for negative brightness) at the given interval in milliseconds.
- `japaneseWindowsKeyboard`: remaps some keys if you have a Japanese keyboard, so that the right alt key for example is replaced with the 変換 key, and the カタカナ・ひらがな・ローマ字 key acts as a right Windows key, and 無変換 acts as a a left Alt key.
- There are additional settings for Macs using Bootcamp: `japaneseMacBookPro` and `japaneseMacKeyboard`.
- `disableCapsLock`: disable the normal operation of Caps Lock.
- `capsPageControls`: allows to use Caps as an alternate Fn key. Then, you can use Caps+Up/Down to perform a PageUp / PageDown, and Caps+Left/Right to perform Home and End. Useful for some keyboards with unintuitive layouts, like Dell laptops.
- `mediaKeysWithCapsLockFnKeys`: does like `useSoftMediaKeys` (which must activated too), except that the F9-F12 keys can be pressed freely when Caps Lock is on, instead of having to do Ctrl + Win + F9-F12. Additionally, F5 can be used for Stop, F6 for Previous Track, F7 for Next Track, F8 for Play/Pause.
- `mediaKeysWithCapsLockSpaceArrow`: if set to true, then it will add the possibility to press the Space key to play/pause when Caps Lock is on, and eat any alphanumeric key, showing a window in that case (just to remind you that you are in this special mode). I used this when I am consuming media, and I want to quickly be able to play/pause with Space.


Using the Roxxor Tool
Expand Down

0 comments on commit c02ce29

Please sign in to comment.