Release build executables should have 3 component version numbers with
the version tag appended, e.g. keymandesktop-14.0.155-alpha-local.exe.
Coming later, rename keymandesktop-version.exe to keyman-version.exe.
Fixes#3665.
On some systems, subkeys of HKCU\Software\Keyman could have incorrect
permissions and these would not be corrected with earlier fixes such as
in #2316. This fix resolves the problem by recursively correcting
permissions on all subkeys, rather than just the top two levels.
This issue caused Metro-style applications (Windows Store apps) to fail
to accept Keyman keyboard input.
Fixes#1843.
If there are so many keyboards installed that the menu would grow larger
than 3/4 of the screen height, then the menu will become scrollable.
Fixes#1659.
If there are too many keyboards to fit in the OSK toolbar, the toolbar
will now show a dropdown menu button and excess keyboards will be
visible there.
When Sentry is trying to shutdown an app which has CEF windows active,
the main process can hang waiting for the CEF renderer etc processes to
shutdown. Instead, we now rely on the child (CEF renderer etc) processes
to shutdown when their parent process aborts, with a watchdog thread, and
then abandon everything in the parent process with ExitProcess. This is
more reliable, especially with nastier crashes like memory corruption or
stack corruption.
Updates Delphi projects to use Sentry API instead of legacy
reporting mechanisms, and strips out existing text-based
reports. Not yet complete: reporting from kmcomapi and
hosted web controls, release number. These are flagged
as build hints.
Reimplements the font helper in pure Delphi controls.
This avoids the issue we had in the past with embedding
a web browser into the OSK component. As a bonus, the
OSK now opens *substantially* faster, making Keyman feel
a whole lot nicer.
Fixes#2450. When Keyman serialized input, it would cause the touch keyboard to cancel
because the touch keyboard thought the received event meant the user was touching the
physical keyboard. This resolves that problem, using a watch timer to check the visibility
of the touch input panel.
Just refactoring minor bits and pieces on this PR. Esp: removed the
unnecessary interrogation of TSF (yay!) and cached the debug flag so it
isn't checked on every single keystroke.
Fixes#364.
Hotkeys in Windows are currently implemented using RegisterHotkey.
However RegisterHotkey does not distinguish between left and right
modifier keys, which means that they override some keyboards' RAlt
combinations.
This feature reimplements hotkey support in the low level keyboard hook,
and adds a feature flag / debug flag Flag_UseRegisterHotkey to return
to the RegisterHotkey model if that is so needed.
I have made minimal refactoring changes to this code, although there
are certainly functions here which could be improved.
I have flagged a couple of potential improvements with TODO.
If the On Screen Keyboard was closed when on a monitor other than the
primary monitor, it would restore to the primary monitor in the top-
left corner instead of the previous location.
This fix allows the OSK to be restored to another monitor, but still
avoids positioning the window off screen if the monitor has been
disconnected.
Fixes#2270.
Fixes#2147.
This potentially addresses the issues reported in #2147 where Keyman
would crash due to a race condition as a critical section was not
deleted before attempting to recreate it.
Some logging has been added for debugging these issues.
Also fixes memory leaks and another race on startup relating to loading
the taskbar icon.
There are still some known memory leaks because DLL_THREAD_DETACH is
not called for all threads before keyman32.dll is unloaded, so those
threads don't get the opportunity to clean themsselves up. However, the
key danger with the csGlobals critical section has been addressed.