Thanks for your interest in improving ScreenKeyboard! Bug reports, layouts, translations, themes, documentation and code are all welcome.
- Install the .NET 10 SDK (and the Uno Platform prerequisites for the targets you want to run —
uno-checkhelps). - Fork and clone the repository.
- Build and test:
dotnet test tests/ScreenKeyboard.Core.Tests dotnet run --project samples/ScreenKeyboard.Sample -f net10.0-desktop -p:SkTargetFrameworks=net10.0-desktop
See docs/building.md for details.
- Keep
ScreenKeyboard.Corefree of UI dependencies; put platform code inScreenKeyboard.Uno. - Add unit tests for engine, layout, NLP and gesture changes (
tests/ScreenKeyboard.Core.Tests). Touch behavior can be tested deterministically withKeyboardTouchProcessorand a fakeIKeyboardScheduler. - Follow the existing code style (
.editorconfig), nullable annotations and XML documentation for public APIs. - UI elements inside the keyboard must never take focus (use
TouchButton, setIsTabStop = false). - Keep public API changes backwards compatible where possible and describe them in
CHANGELOG.md.
Layout data follows FlorisBoard's format. Improvements to layouts that also apply to FlorisBoard are best contributed upstream to FlorisBoard as well. Custom layouts can be proposed as JSON documents (see docs/layouts.md).
- Create a branch, keep changes focused and add tests/docs.
- Make sure
dotnet testpasses. - Open a pull request describing the motivation and the change; include screenshots for visual changes.
By contributing you agree that your contributions are licensed under the Apache License 2.0.