Skip to content

Commit

Permalink
add a README for this fork
Browse files Browse the repository at this point in the history
  • Loading branch information
mikeblas committed Nov 22, 2021
1 parent 9e4af3b commit 54720f5
Showing 1 changed file with 20 additions and 36 deletions.
56 changes: 20 additions & 36 deletions README.md
@@ -1,55 +1,39 @@
# AutoHotkey_L #
# AutoHotkey for X-Keys #

AutoHotkey is a free, open source macro-creation and automation software utility that allows users to automate repetitive tasks. It is driven by a custom scripting language that is aimed specifically at providing keyboard shortcuts, otherwise known as hotkeys.

AutoHotkey_L started as a fork of AutoHotkey but has been the main branch for some time.

https://autohotkey.com/


## How to Compile ##

AutoHotkey is developed with [Microsoft Visual Studio Community 2015 Express](https://www.visualstudio.com/products/visual-studio-community-vs), which is a free download from Microsoft.

- Get the source code.
- Open AutoHotkeyx.sln in Visual Studio.
- Select the appropriate Build and Platform.
- Build.

The project is configured to build with the Visual C++ 2010 toolset if available, primarily to facilitate Windows 2000 support but also because it appears to produce smaller 32-bit binaries than later versions. If the 2010 toolset is not available for a given platform, the project should automatically fall back to v140 (2015), v120 (2013) or v110 (2012).

Note that the fallback toolsets do not support targetting Windows XP. For that, install VS 2010 or change the platform toolset to v110_xp, v120_xp or v140_xp (if installed).

The project should also build in Visual C++ 2010, 2012 or 2013.


## Build Configurations ##

AutoHotkeyx.vcxproj contains several combinations of build configurations. The main configurations are:
## This Fork ##

- **Debug**: AutoHotkey.exe in debug mode.
- **Release**: AutoHotkey.exe for general use.
- **Self-contained**: AutoHotkeySC.bin, used for compiled scripts.
AutoHotkey does *not* support the popular [X-Keys keyboards from PI Engineering](https://xkeys.com/xkeys.html "X-Keys at PI Engineering"). I love my X-Keys keypad, but the software included with it isn't as flexible as AutoHotKey.

Secondary configurations are:
Some workarounds are possible--most notably, making the MacroWorks software that ships with X-Keys emit unique strings that are interpreted by AutoHotKey as hotstrings, then writing AHK macros in response to those hot strings. This has some limitations, and also leaves behind some integration possibilities.

- **(mbcs)**: ANSI (multi-byte character set). Configurations without this suffix are Unicode.
- **(minimal)**: Alternative project settings for producing a smaller binary, possibly with lower performance and added dependencies.
This fork takes the AutoHotKey 1.x code and adds native support for X-Keys keyboards.

### What Does Not Change ###

## Platforms ##
This for doesn't change any X-Key features. However, I have not been careful about back-level compatibility. X-Keys seems to try to maintain compatibility, for example, with Windows XP and other deprecated software. I don't have the resources (or motivation) to test with unsupported software.

AutoHotkeyx.vcxproj includes the following Platforms:
A product like AutoHotKey has to be compatible with everything, and that means exhaustive testing. Undoubtedly, I'll end up breaking something because I cant perform that exhaustive testing.

- **Win32**: for Windows 32-bit.
- **x64**: for Windows x64.
### What Does Change ###

Visual C++ 2010 officially supports XP SP2 and later. AutoHotkey supports Windows XP pre-SP2 and Windows 2000 via an asm patch (win2kcompat.asm). Older versions are not supported.
So far, I've added support for a new key specification as `XKnn`. The number `nn` is the key number on the X-Keys keyboard in decimal, and works just like the `VKnn` specification:

## AutoHotkey v2 Alpha ##
XK15::
Send, XKey number fifteen
return

https://autohotkey.com/v2/
There is lots more work to do.

[v2 Branch](https://github.com/Lexikos/AutoHotkey_L/tree/alpha)
### What Needs to be Done ###

* While `XKnn` works itself, it doesn't support modifiers yet (like control or shift, specified with `^` or `+`). Modifiers are parsed correctly, but I've got to work out how to suppress the modifier key while the key macro is processing.
* Find other places where `XKnn` needs to be tested. For example, in the `HotKey` function
* Add support for multiple X-Keys keyboards. This will probably be by adding new `#Directives`.
* Add built-in functions to write to the X-Keys keyboard to set the LED state, backlight color and brightness, and so on.
* I need to learn more about AutoHotKey. There are probably hidden features and expectations that I won't support simply because I don't know them, or don't understand them. As I uncover new work items and ideas, I'll add them here.

0 comments on commit 54720f5

Please sign in to comment.