Search
Version History

The list below describes past changes and additions to MindFusion Virtual Keyboard:

New in version 5.0.4

  • The RepeatDownOnly property specifies whether keys repeat only key-down events, or pairs of down and up events.
  • Fix for AltGr grapheme generation not working in some applications.

New in version 5.0.3

.NET 6 support

The Virtual Keyboard distribution now includes assemblies for .NET 6. Locally installed assemblies don't show automatically in toolbox at this time, you can add them to projects either manually or through Nuget package manager.

Miscellaneous

  • CurrentCase now reflects Shift + AltGr combinations.
  • The control now tracks state of Caps-lock and Shift keys of physical keyboard (if one is attached to the system).
  • The Stretch property specifies how the control fills available space in its parent element.
  • ChangeLanguage overloaded methods let you set current language either by Windows SDK layout identifier or by CultureInfo.

New in version 5.0.2

.NET 5 support

The Virtual Keyboard distribution now includes assemblies for .NET 5. Locally installed assemblies don't show automatically in toolbox at this time, you can add them to projects either manually or through Nuget package manager.

Miscellaneous

  • UnicodeKey fix for sending key to popup window in same process.
  • Dispose and DisposeShared methods added.
  • Fixed unequal layout margins; now the keyboard should center correctly inside its layout area.

New in version 5.0.1

.NET Core assemblies

The Virtual Keyboard distribution now includes assemblies for .NET Core 3.1. Locally installed assemblies don't show automatically in toolbox at this time, you can add them to projects either manually or through Nuget package manager.

Miscellaneous

  • Enable PasswordMode to stop highlighting pressed or hovered keys.
  • CurrentCase now reflects the state of Shift and CapsLock pressed at the same time.

New in version 5

General IME mode

The component now supports general IME mode that maps raw input sequence to dictionary entries. The keyboard collects clicked characters in a staging area and shows the matching entries as suggestions. Users can either click a suggestion button to send its content as input, or click the space key to send the first suggestion.

To enable IME mode, call the LoadImeTable method, specifying the language for which to load IME table and the dictionary file path. The table file format contains one line per entry, with three tab delimited values: raw input, translation, frequency. For example, a hypothetical IME table that translates chemical formulas to compound's common name could look like this:

C#  Copy Code
c3h8o  Propan-2-ol    2
c3h8o  Propanol       4
h2o    Water          1
c3h8o  Methoxyethane  1
c3h8o  Propan-1-ol    3
c2h6   Ethane         1
c3h7br 1-bromopropane 3
c3h7br 2-bromopropane 2
....
vk.LoadImeTable(
 new CultureInfo("en-US"), "chemical.txt");

and suggestions for the partial input "c3h" will look like this:

Chinese

The component can parse IME tables from the Linux Ibus project to implement various Chinese transliteration systems. For example you can load following tables for respectively mainland China's simplified Chinese, Taiwan's traditional Chinese and Hong-Kong's Cangjie input methods:

Pinyin
https://android.googlesource.com/platform/packages/inputmethods/PinyinIME/+/refs/heads/master/jni/data/rawdict_utf16_65105_freq.txt

Zhuyin
https://github.com/definite/ibus-table-chinese/blob/master/tables/zhuyin.txt

Cangjie
https://github.com/definite/ibus-table-chinese/blob/master/tables/cangjie/cangjie3.txt

The following image shows the Zhuyin input method:

Japanese

If current language is Japanese, the keyboard renders Hiragana characters. In addition, LoadImeTable can parse tables from Google's mozc project to convert Hiragana to Kanji. To enable this mode, specify path to a directory containing the 10 dictionary files from following link:
https://github.com/google/mozc/tree/master/src/data/dictionary_oss

This image demonstrates Hiragana to Kanji conversion:

Korean

The keyboard renders Hangul letters when current language is Korean, and automatically enables IME mode that converts letter sequences to Hangul syllabic blocks according to Unicode rules:

Dictionary licensing

Note that the open source Chinese and Japanese dictionaries linked above have licensing terms of their own - some are in the public domain, some include attribution / no warranty clauses, some are LGPL. For licensing terms, check comments in respective dictionary files or license sections of their parent project. If there is enough interest, we will provide built-in dictionaries on MindFusion's standard licensing terms for next releases.

New in version 4.5

Key improvements

  • The UnicodeKey class can send any Unicode symbol as input to target text controls.
  • The IsPressed property is set to true while a key is pressed down by the user, allowing for data triggers in Xaml templates to change appearance of pressed keys.
  • Values of Content property of RegularKey can now be sent to external processes.

Keyboard improvements

  • A new Windows10 color scheme added to MindFusion.UI.Wpf.ColorSchemes.
  • The SetKeyLabels method lets you override labels of keys for a given language.

Active window tracking

  • The control updates its layout immediately when a window with a different current language activates.
  • Pressing a key no longer activates last target window, which was necessary when keyboard is used as a popup inside application but led to activation flickering. Set the new PreventActivation property instead to disable the keyboard's popup window from activating altogether.

Miscellaneous

  • Move multiple selected keys in keyboard creator.
  • Various keyboard creator fixes.

New in version 4.4.2

UI culture handling

The control no longer updates CurrentCulture of UI thread automatically to match current input language. This could lead to subtle bugs in applications' text parsing and formatting code when culture-dependent delimiters and string formats change together with the input language. To better match its purpose and Windows terminology, the old CurrentCulture property of VirtualKeyboard has been renamed to InputLocale. To get the old behavior back where current culture follows input language, set the AutoUpdateCulture property to true.

Auto-repeat customization

The AutoRepeat property lets you disable or enable auto-repeat. The RepeatDelay and RepeatRate properties let you customize auto-repeat timing.

New in version 4.4.1

  • Fixed bug where the keyboard would not load its built-in language layouts automatically when culture changes (e.g. nl-BE culture did not switch to 'azerty' layout).
  • The keyboard now detects changes of target window's current culture automatically and updates its character labels and layout (previous version only updated when the window is activated).
  • The component no longer installs its window and keyboard hooks while used in design time, fixing some rare Visual Studio crashes.
  • Fixed problem where license keys would not validate when running under Windows Embedded edition.

New in version 4.4

API Changes