This page summarizes the script-visible changes in recent Keysharp releases, so that a script written against an earlier version can be brought up to date. The release page holds the authoritative notes and the downloads for each version.
Note: Keysharp has not reached version 1.0. Behavior can change between releases, including in ways which require edits to existing scripts. Each release below lists its breaking changes first.
| Property | Value |
|---|---|
| Keysharp version described here | 0.0.0.17 |
| AutoHotkey compatibility target | v2.1-alpha.30 |
A compatibility target states which AutoHotkey language and library reference these pages describe. It does not mean that every described feature is implemented identically, or that it behaves the same on every platform. See Changes from AutoHotkey to Keysharp for the differences, Platform Support for per-platform availability, and the platform remarks on each affected reference page.
The corresponding upstream language changes are described in Changes from v2.0 to v2.1.
In development.
A_AhkBuildVersion, the A_Asm* family, A_ClipboardTimeout, A_HotIfTimeout, A_InputLevel, A_IsPersistent, A_KeysharpPath, A_LoopKey, A_MaxThreadsBuffer, A_MaxThreadsPerHotkey, A_NewLine, A_PeekFrequency and A_Priority.Ks.JsonEncode and Ks.JsonDecode became Json.Encode and Json.Decode on the Json class.FuncObj is no longer a name. The function-object class is Func, so MsgBox is Func works and MsgBox is FuncObj does not; the internal name appears only in low-level diagnostics such as stack traces. InputObject likewise became InputHook, and the remaining implementation classes were hidden from global scope.SetImage was removed.MeasureText take Gui.SetFont-style Options and FontName arguments in place of one font string, and MeasureText returns a {w, h} object instead of writing to ByRef variables; Opacity became Alpha; and Search, SearchAll and SearchPixel return a match object and take the region as flat X, Y, W, H parameters.(Hook, DX, DY) rather than positions. Per-platform extras, such as the device identifier on Linux, arrive in A_EventInfo.FindIndex already did, instead of returning 0. An empty array still returns 0.OwnProps(false) is an error rather than a no-op.Ks.OutputDebugLine still takes the clear flag.Locale option consults the current culture.SubStr(s, StartingPos: 2)) instead of relying on its position. A name that matches no parameter is an error, reported before the script runs where it can be (#Warn NamedArg). The name may also be computed with a dereference, as an object-literal key can. NamedArgs is the carrier type, for building or inspecting such a call at run time.Copilot is a Keysharp alias in static hotkey and remap declarations, which the compiler replaces with the combination <#<+F23 that the key's firmware emits; it is not a runtime key name, so Send, Hotkey and the key-state functions still take the component keys. There is no Office alias.<^a & b::, a & <^b::). Those on the prefix are tested when it goes down and the verdict held until it is released, which is what lets a key whose firmware asserts modifiers and drops them immediately serve as a prefix.Gui.Control.OnMessage register a callback for a window message ahead of default processing. Window messages are a Win32 concept, so the registration is accepted but never fires on Linux and macOS.*n standard sounds. macOS plays through afplay; Linux picks the best installed player for the file type, so which formats are available depends on which of them are present.Move likewise reports the window's new position and size there. Every WinEvent type is delivered on all platforms, subject to each one's event source — see the platform sections on that page.Click, DoubleClick, ContextMenu and MouseMove handlers, receiving coordinates local to the overlay. The overlay must not be click-through to receive them.Radio, Right, RTL, Break and BarBreak are supported, with per-platform limits noted on that page.Remove search for an element which has no value when Value is omitted.zwlr_virtual_pointer_v1. Overlays on KWin and wlroots receive mouse input through their layer-shell surfaces; compositor-drawn overlays on GNOME and Cinnamon cannot yet.osx-x64 builds for Intel Macs are published alongside osx-arm64. macOS 15 or later is required.Send restoring modifiers from a stale snapshot in SendEvent mode, #Warn reporting the wrong line inside an included file, #Import creating a setter for a read-only property, overriding a built-in class's __Enum, main window content on Windows and error dialog sizing on a scaled display. #HotIf criteria are evaluated through a cheaper executor.
Released 19 July 2026.
ImageCapture() was removed. Use the Image class instead.keysharp-inputd daemon; the SharpHook and X11 fallbacks were removed. See Platform Support.A_ScaledScreenDPI was renamed to A_ScreenScale.WINDOWS, OSX or LINUX.ImageCapture().Highlight and ToolTip on Linux and macOS.Active, Exist, NotExist, Move, Minimize, Restore and TitleChange.*Dir scan-direction option for ImageSearch.OCR.ks) with a pluggable engine, and demo scripts including ClipboardHistory, InputHUD, OCRSnip, Shell, WindowGrab and WindowTiler.keysharp-inputd (evdev and uinput), reworked for multi-user handling, per-script permissions, Unicode sending and mouse buttons.Release-mode stack traces for C# exceptions, OnExit teardown, script exit when the last window closes, thread priority handling and DLL path normalization. Parser fixes for #Include, static variables, dereferences and remap syntax. Regular-expression pattern caching, font caching, cheaper per-call thread setup and faster keyboard-layout queries.
Released 22 June 2026. This release made Keysharp cross-platform across Windows, Linux and macOS.
inputd input daemon, .deb packaging with automatic .NET 10 installation, Unicode character sending and Keyview syntax highlighting.A_GuiTheme.Notes for 0.0.0.14 and earlier are on the release page. For changes which have not yet been released, see the source history; documentation changes are tracked in the KeysharpDocs history.
The original AutoHotkey change log is retained as an archived upstream reference. Its entries describe releases of AutoHotkey, not of Keysharp.