Commit graph

929 commits

Author SHA1 Message Date
Marc Durdin
bab345cb65 chore(developer): Merge branch 'master' into fix/developer/5577-import-from-layout-dirty-flag 2021-09-13 12:27:12 +10:00
Marc Durdin
36c21657e2 fix(developer): ensure file modified after import from layout
Fixes #5577.

This ensures that the touch layout file is marked as modified after
running Import From Layout in Keyman Developer, so that changes are
not lost when you save.
2021-09-10 14:19:47 +10:00
Marc Durdin
5b9e49ce4e chore: sign kmnkbp0-0.dll 2021-08-27 17:22:23 +10:00
Marc Durdin
fbdbf65553 chore(developer): build core with developer 2021-08-27 16:24:44 +10:00
Marc Durdin
adc2509c5c fix(developer): include Keyman Core in Keyman Developer
Fixes #5648.

Includes kmnkbp0-0.dll in the installer for Keyman Developer.
2021-08-27 13:22:19 +10:00
Marc Durdin
3f2ca56a39 fix(developer): F6 in debugger and cef focus
Relates to #5013.

If user presses F6 in the debugger (while not in run mode), will now
switch to editor view, and vice-versa.

Also fixes the inversion of the focus test in CEF so that focus controls
work correctly for web hosts.
2021-08-18 15:28:37 +10:00
Marc Durdin
bb351a7d0b chore(developer): hide debug events panel
Relates to #5013.

Hide the debug events panel by default, and add
a Tools menu item to make it visible for dev purposes
(Ctrl+Shift+click on Tools menu to view).
2021-08-18 09:05:53 +10:00
Marc Durdin
9f0ba213aa fix(developer): null check 2021-08-18 08:31:00 +10:00
Marc Durdin
11043b62c9 fix(developer): get Test Mode working again
Relates to #5013.

This resolves the broken Test Mode with Keyman Core. Previously, Test
Mode just dumped the keyboard into Keyman for Windows, and let it do its
thing. Given that we no longer have the dependency on Keyman for
Windows, the Test window must use Keyman Core to process keystrokes, and
that means there are some differences in how Test Mode operates in 15.0:

* Behind the scenes, the Test mode is just the Debug mode with
  breakpoints and single step disabled, and the Debug Status window
  hidden
* Test mode requires debug information in the keyboard (see note below)
* You can always switch between Test and Debug mode
* Deadkeys are always shown in the debug window

Test Mode now requires debug information to be included in the keyboard
in order for deadkeys to be tracked correctly in the editor. While it
would be possible to remove the need for this, it does not add any
significant benefit to do so -- doing so would mean that the tester
would have less visibility into deadkeys, and complicate the Core
marker tracking in the debug window.

I considered removing Test Mode altogether, but it still feels like a
useful view for playing with a keyboard without all the debugging
paraphernalia cluttering the display. It's a little slower than full
native Keyman for Windows (aka the 14.0 Test Mode), because the debug
hooks are still running in the background, but it is quite usable.

Note the removal of `Application.ProcessMessages`. This resolves the
issue of keystrokes being swallowed by the debugger during
non-interactive debug runs, making rapid input work properly in both
Debug Mode and Test Mode.
2021-08-18 07:46:39 +10:00
Marc Durdin
77dc2ae749 chore(developer): refactor forcekeyboard in debug 2021-08-18 07:02:22 +10:00
Marc Durdin
db0f432b1c chore(developer): debug deadkey 1-based values 2021-08-18 06:24:27 +10:00
Marc Durdin
265d3e0b83 chore(developer): remove unused TDebugEventCursor 2021-08-17 19:13:43 +10:00
Marc Durdin
cbe99922eb fix(developer): debugger cleanup
Relates to #5013.

Before starting on new functionality in the debugger, I wanted to
cleanup a bunch of bits and pieces, including:

1. Correct handling of text selection and deletion
2. Refactor of character grid at bottom of debug window
3. Deadkey realignment after text changes
4. Correct tracking of cursor position between events
5. Handling a few destruction edge cases
2021-08-17 19:04:32 +10:00
Marc Durdin
93cc5d45f2
Merge pull request #5513 from keymanapp/feat/developer/5013-keyman-core-debugger-part-1
feat(developer): debugger uses Keyman Core 🐞
2021-08-06 13:43:22 +10:00
Marc Durdin
3faa32b9cd chore(developer): address review comments 2021-08-06 12:49:21 +10:00
Marc Durdin
dbf47eeee3 chore(developer): fix debugkeyboard reference 2021-08-04 13:47:28 +10:00
Marc Durdin
142d0807a3 refactor(developer): move FDeadkeys back into frmDebug 2021-08-04 13:09:32 +10:00
Marc Durdin
4ed4aeebf6 refactor(developer): keyman core library path 2021-08-04 12:46:07 +10:00
Marc Durdin
63f8137005 refactor(developer): rename and move debugging.pas
Removes a lot of unused functions and one unit. Cleanup for debugging.
2021-08-04 09:44:56 +10:00
Marc Durdin
90c8252370 refactor(developer): visual keyboard import
Refactors visual keyboard import from kmx to use Keyman Core, and at the
same time removes any UI interactions or direct Windows dependencies
from the process.
2021-08-04 07:44:18 +10:00
Marc Durdin
c5eb0a4d3f feat(developer): refactoring debugging code 2021-08-03 17:06:31 +10:00
Marc Durdin
bdea4279f1 refactor(developer): debugger/core integration 2021-08-03 06:22:34 +10:00
Marc Durdin
ed73d5667b chore: add variable docs 2021-07-30 15:27:12 +10:00
Marc Durdin
5f2caba964 fix(developer): compiler use and match behavior for Web should be same as Core
Fixes #5440.

Currently, the behavior of `use()` and `match` for KeymanWeb compiled
keyboards is not identical to the Windows (or Core) behavior. The
example keyboard in #5440 generates 'foo' instead of 'abc' on web.

This fixes that by ensuring that `match` is not called when `use()` is
found in a group rule match.
2021-07-30 14:46:13 +10:00
Marc Durdin
ec9df7e238 feat(developer): debugger uses Keyman Core
Start of the refactor of the debugger to use Keyman Core. Basic events
work but there is a lot to tidy up yet.
2021-07-29 16:29:28 +10:00
Marc Durdin
5d32a61a63 chore(windows): patches for Delphi 10.4
Updates Keyman for Windows and Keyman Developer sources so that they
build under Delphi 10.4. No validation has been performed to ensure that
there are no other issues. The intent here is to get a baseline build
working.

Note also IMSample.vcxproj which has its WinSDK version updated for
VS2019.
2021-07-27 16:57:40 +10:00
Marc Durdin
2f9d29905e
Merge pull request #5449 from keymanapp/chore/developer/fixup-devtime-paths
chore(developer): fixup devtime paths
2021-07-19 09:16:52 +10:00
Marc Durdin
121410fd53 chore(developer): fixup devtime paths
After the path refactor, here are some assumed paths that needed fixing.
2021-07-08 15:08:01 +10:00
Marc Durdin
845d65e5e4 chore(windows): remove backup build step
We no longer need to backup debug files as they are saved to the symbol
store during a release build. This reduces the amount of storage
required for a release build and should speed up the build also.

Also fixes the broken build where backup had not been updated for the
new consistent build paths.
2021-07-07 08:09:26 +10:00
Marc Durdin
651932f1bb
Merge pull request #5405 from keymanapp/chore/windows/build-paths
chore(windows): make build paths consistent
2021-07-06 15:27:05 +10:00
Marc Durdin
c4efe63108
Merge pull request #5403 from keymanapp/chore/developer/remove-initclasses
chore(developer): remove obsolete InitClasses
2021-07-01 11:57:29 +10:00
Marc Durdin
996d24fdb3 chore(windows): remove kmndebug ref from this branch 2021-07-01 11:42:33 +10:00
Marc Durdin
5246408ac0 chore(windows): make build paths consistent
More iterations on this yak shave.
2021-07-01 10:52:59 +10:00
Marc Durdin
449083fc0a chore(developer): remove obsolete InitClasses 2021-07-01 07:39:39 +10:00
Marc Durdin
deb01d1a63 chore(windows): make build paths consistent
Move to all projects using bin/ and obj/ for outputs, and
cleanup all Makefiles and project files accordingly. Remove
some obsolete projects along the way. Cleanup .gitignore
also.
2021-07-01 07:38:00 +10:00
Marc Durdin
5507ceb7ed fix(developer): builder commands were ignored
As we changed the User Agent string to have 'Keyman' instead
of 'TIKE', the builder commands were being ignored.
2021-06-29 16:51:34 +10:00
Marc Durdin
f3b59b7dd9 fix(developer): editor commands were ignored
As we changed the User Agent string to have 'Keyman' instead
of 'TIKE', the editor commands were being ignored.
2021-06-29 16:49:07 +10:00
Joshua Horton
05c319ebf4
Merge pull request #5291 from keymanapp/refactor/web/osk-keys
refactor(web): OSK key source-code reorganization
2021-06-22 13:58:39 +07:00
Marc Durdin
3d4acd8e10 chore: correct example 2021-06-17 04:52:33 +10:00
Marc Durdin
87397e8846 fix(developer): kmconvert help match reality
kmconvert built-in help was missing `-targets`, misspelled
`-full-copyright`, and the parameter checking was skipping the last
parameter (which only mattered if the last parameter was `-nologo`, but
still...).
2021-06-17 04:41:09 +10:00
jahorton
92a17542ab refactor(web): special char defn site; used only by keys 2021-06-16 08:47:40 +07:00
Marc Durdin
8e82265d33 fix(developer): support spaces in regression tests
Fixes #5216.

A `<text>` element in the regression text xml which contained only
whitespace would cause the import to crash as this would be ignored by
the XML parser, leading to a `Null` `nodeValue` for that element. To
solve this, we need to:

1. Use `xml:space="preserve"` attribute on `<text>` elements
2. Update the DTD to allow `xml:space` on `<text>` elements
3. While we are at it, move the DTD from `www.tavultesoft.com` to
   `api.keyman.com`.

See also:
* keymanapp/tavultesoft.com#4
* keymanapp/api.keyman.com#155
2021-06-03 09:41:05 +10:00
Marc Durdin
7235bf2057 fix(windows): sentry.dll version handling
Fixes #5166.

This introduces versioned management of sentry.dll for Keyman for
Windows, Keyman Engine and Keyman Developer. As sentry.dll's ABI is not
backwardly compatible, we have to maintain independent copies of each
DLL for each app.

sentry.dll (or sentry.x64.dll for x64 apps) will be found in the
sentry-0.4.9 folder relative to the running process, except when running
from within the keyman repo tree (based on presence of KEYMAN_ROOT env
var). In those cases, the windows/src/ext/sentry sentry.dll will be
used, allowing us to test new debug time sentry DLLs easily.

A little bit of cleanup and consolidation was also done in the
KeymanPaths.pas unit.
2021-05-28 15:55:06 +10:00
Marc Durdin
e46a3ee46c
Merge pull request #5143 from keymanapp/chore/windows/vs2019
chore(windows): move to vc++ 2019
2021-05-25 19:38:32 +10:00
rc-swag
0fd5f01187
Merge pull request #5119 from keymanapp/docs/windows/5118-windows-keyman-engine-readme
docs(windows): Initial commit - README.md
2021-05-25 16:45:50 +10:00
Marc Durdin
f3ba9445dd chore(windows): update vcxproj for vc++2019 2021-05-25 15:58:48 +10:00
rc-swag
98d802f769
docs(windows): Apply suggestions from code review
Co-authored-by: Marc Durdin <marc@durdin.net>
2021-05-25 08:08:13 +10:00
Ross Cruickshank
b2f3f5d5db docs(windows): add missing markdown "#" 2021-05-24 10:43:49 +10:00
Ross Cruickshank
4bbd242161 docs(windows): adding README.md to windows/src
Fixes #5118
2021-05-24 10:32:06 +10:00
Marc Durdin
8e435f67d1 chore(windows): cleanup old .dof, .bdsproj and .cfg files
Fixes #519.

I have removed these .cfg, .dof, and .bdsproj files from the primary
projects in the Windows source. There is some ambiguity as to whether
.cfg files are used by the command line compiler (I checked with procmon
and they *are* read by dcc32.exe), so we will need to make sure that
no adverse changes have been made by this. In theory at least, the
.dproj data trumps .cfg data -- and all the projects in question have
a .dproj file -- so this should be a safe cleanup.

I have opted not to touch the /buildutils, /ext, /support and
/test folders at this point.
2021-05-24 10:22:28 +10:00