Skip to content

Configuration File

Peter edited this page Sep 17, 2017 · 2 revisions

Until a user interface is added, config.ini is where all the options are edited.

[Main]

Language

Type: str

Set which language files to use. It uses locales, so for example, en_GB is for England, and en_US is for America. Each file can have its own content or contain a link to another file.

The locale of your region will be chosen upon creation of the config, but if the file doesn't exist, the default option of en_GB will be used instead.


[Paths]

Any environment variables may be used in paths, such as the Windows ones of %APPDATA% and %PROGRAMDATA%. For convenience, %DOCUMENTS% has been added as a custom option and is used by default, as the script may otherwise fail if put in an unwritable location.

AppList

Type: str

Set where AppList.txt is stored. This is best left as default as it will be with the config and you may wish to add custom options.

Please get in touch if it is missing something, as it can be added to the master list for everyone to use.

Data

Type: str

Set where the data files are stored. Again, best left as default, though if there is a lack of space, it can be moved to another drive.


[Internet]

Enable

Type: bool

Set if the application is allowed to access the internet.

Only a very small amount of data is used, so it shouldn't affect anyone on a metered connection. It is currently limited to updating AppList.txt from the master file, and periodically sending an update to analytics.

UpdateApplications

Type: int

Choose the minimum amount of time in minutes before AppList.txt will update from the internet.

Setting the value to 0 will disable it.


[Save]

Frequency

Type: int

Set how often the script should attempt to save the data. It is quite a processing heavy operation, so setting it too often will cause unnecessary CPU usage. This doesn't affect saving when switching profiles.

MaximumAttemptsNormal

Type: int

Sometimes the save may fail if the file has been locked by something, so this determines how many times to retry before giving up and continuing.

MaximumAttemptsSwitch

Type: int

Failing a save normally isn't a huge problem, but when switching profiles, all the recorded data since the last save will be lost if it isn't saved. This option can give a much larger time frame for the file to complete the save process before the new profile is loaded.

WaitAfterFail

Type: int

If the file is locked, trying to save 5 times at once won't do much. This puts a wait between each attempt.


[GenerateImages]

FileType

Type: str

Set which image format is used when saving. For the highest quality use png, or for smaller files use jpg.

HighPrecision

Type: bool

Enabling this will result in more detailed images at the cost of processing time.

To generate the images, all the maps at different resolutions need to be merged together. This can be done quite easily once the maps have been scaled to a constant size. Upscaling a resolution by an unusual amount can introduce jagged edges, so this option doubles the upscale amount to minimise the issue.

For the keyboard, it simply sets the multiplier to minimum of 4, which does actually result in a larger image.

OutputResolutionX | OutputResolutionY

Type: int

Set what resolution to save the final image as.


[GenerateTracks] | [GenerateClicks] | [GenerateKeyboard] | [GenerateCSV]

NameFormat

Type: str

Set how the output files should be named. This can be used to avoid conflicts without having to manually name everything.

See here for information on possible options.

ColourProfile

Type: str

Set the colours that should be used. Either a preset map or your own can be used.

See here for information on how to use it.

GaussianBlurMultiplier (clicks)

Type: float

Set how much to multiply the blur amount by. If the heatmap is too blurred for your liking, try reduce this value.

DataSet (keyboard)

Type: str (time/press)

Choose what the colours should relate to. The options are the amount of time you have held keys down for, which is generally more accurate of your usage, or just key presses.

For example, in a FPS game, w is used most of the time, but it's generally held down, so a and s get a higher press count if time is ignored.

The original idea had a separate colour map for both time and presses that would be merged together, but it didn't end up looking any good so was removed.

ExtendedKeyboard (keyboard)

Type: bool

Set if the entire keyboard or just the main section should be shown. Enabling this option will remove the arrow keys and numpad from the output image.

LinearMapping (keyboard)

Type: bool

Set if the colours should be applied in a linear way or not. It is disabled by default as it generally looks less interesting (instead of the full colour range, most values would be at the low end), but this should be enabled to get an accurate representation of the data.

LinearPower (keyboard)

Type: float

If one or two keys are skewing the linear data so nothing else can be seen, an exponential value can be applied to bring the colours out.

SizeMultiplier (keyboard)

Type: float

Multiply the size of everything at once for the keyboard. The individual options are provided in [Advanced], this is just a quick way to upscale it all.

MinimumPoints (CSV)

Ignore any maps when generating a CSV that contain less than this amount of points.


[Advanced]

CheckResolution

Type: int

Set how often in ticks to check the current resolution in ticks.

CheckRunningApplications

Type: int

Set how often in ticks to check the current application in ticks.

ReloadApplicationList

Type: int

Set how often in ticks to reload the application list. This may trigger the download if it is due.

ShowQueuedCommands

Type: int

Set how often in ticks to show the number of commands that are queued. It's mostly to check it is all running correctly, as if python itself crashes, the background thread silently ends and the queue just keeps getting larger as there is nothing reading the other end.

CompressTrackMax

Type: int

Set the maximum number of ticks before compression activates.

Track compression is used so that new data is always able to be added, instead of slowly becoming more and more dense. The tracks work by incrementing a value by 1 and writing that into an array, and compression works by dividing every pixel to lower that value again.

Too much compression will result in a lack of background data as it'll fade out too fast. Setting it too low will result in a large mash of recent tracks. Testing values generally requires a few hours of usage to see the result, so it is recommended not to change this by much.

CompressTrackAmount

Type: float

Set the divide amount when the compression activates.

HeatmapRangeClipping

Type: float

Set the percentage of heatmap to ignore.

If the heatmap is a constant range, then only a single point will be maxed out, whereas a lot of values will be low. This value reduces the maximum value by a tiny amount, but enough so that more points are maxed out.

KeyboardDropShadowX | KeyboardDropShadowY

Type: float

How many pixels the shadow should be.

KeyboardFontHeightOffset | KeyboardFontWidthOffset

Type: float

How many pixels gap to add between the key edge and font.

KeyboardFontSizeMain

Type: float

Size of the font that is used for the key names.

KeyboardFontSizeStats

Type: float

Size of the font that is used for stats.

KeyboardFontSpacing

Type: float

How many pixels are between the key name and key stats.

KeyboardImagePadding

Type: float

How many pixels are around the image.

KeyboardKeyBorder

Type: float

How many pixels the outline is.

KeyboardKeyCornerRadius

Type: float

The radius of the rounded key edges.

KeyboardKeyPadding

Type: float

Number of pixels between each key.

KeyboardKeySize

Type: float

How many pixels the dimensions of the key is.

MessageLevel

Type: int

Set how much information should be displayed in the console. It is best left at 1 or 2 unless debugging something.

0: Everything (mouse movement)
1: Default (mouse clicks, key presses, resolution, etc)
2: Important (save, compress, application, etc)
3+: Nothing

RepeatClicks

Type: float

Set how many seconds to wait when holding down the mouse button before a new click is recorded.

Disable by setting to 0.

RepeatKeyPress

Type: float

Set how many seconds to wait when holding down a key before a new press is recorded.

Disable by setting to 0. With the time also being tracked for key presses, this is probably best left disabled.