Under Review
Last Updated: 21 Nov 2024 12:28 by Walter
Created by: Walter
Comments: 2
Category: VirtualKeyboard
Type: Bug Report
1

Hello,

I found a bug where the EmptySpace element breaks the layout. When I use a Key-Button instead, the layout shifts to the correct position. However, I don't actually want to have any button in this position at all.

EmptySpace Element:


<RadVirtualKeyboard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Grid> 
        <KeysLayout KeySpacing="0.1"> 
            <Rows> 
                <Row> 
                    <Keys>
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="81" /> 
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="87" /> 
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="69" /> 
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="82" /> 
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="84" />
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="89" />
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="85" /> 
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="73" /> 
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="79" /> 
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="80" />
                        <Key DisplayText="&#xf55a;" KeyType="Special" Width="2" Height="1" VirtualKey="8" />
					</Keys> 
                </Row> 
                <Row> 
                    <Keys>
	                    <EmptySpace Width="0.5" Height="1" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="65" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="83" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="68" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="70" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="71" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="72" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="74" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="75" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="76" />
						<EmptySpace Width="1" Height="1" />
						<Key DisplayText="&#xe331;" KeyType="Special" Width="1.5" Height="2" VirtualKey="13" />
                    </Keys> 
                </Row> 
                <Row> 
                    <Keys>
						<Key DisplayText="&#xf357;" KeyType="Lock" Width="1.5" Height="1" VirtualKey="20" />
						<Key KeyType="Normal" Width="1" Height="1" VirtualKey="90" />
						<Key KeyType="Normal" Width="1" Height="1" VirtualKey="88" />
						<Key KeyType="Normal" Width="1" Height="1" VirtualKey="67" />
						<Key KeyType="Normal" Width="1" Height="1" VirtualKey="86" />
						<Key KeyType="Normal" Width="1" Height="1" VirtualKey="66" />
						<Key KeyType="Normal" Width="1" Height="1" VirtualKey="78" />
						<Key KeyType="Normal" Width="1" Height="1" VirtualKey="77" />
						<Key DisplayText="," KeyType="Normal" Width="1" Height="1" />
						<Key DisplayText="." KeyType="Normal" Width="1" Height="1" />
					</Keys> 
                </Row> 
                <Row> 
                    <Keys>	               
	                    <Key DisplayText="&amp;123" KeyType="Special" Width="2" Height="1" VirtualKey="113" />
                        <Key DisplayText="" KeyType="Special" Width="10" Height="1" VirtualKey="32" />	                
					</Keys> 
                </Row> 
            </Rows> 
        </KeysLayout> 
   </Grid> 
</RadVirtualKeyboard> 

Key-Element (Layout desired with EmptySpace):


<RadVirtualKeyboard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Grid> 
        <KeysLayout KeySpacing="0.1"> 
            <Rows> 
                <Row> 
                    <Keys>
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="81" /> 
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="87" /> 
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="69" /> 
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="82" /> 
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="84" />
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="89" />
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="85" /> 
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="73" /> 
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="79" /> 
                        <Key KeyType="Normal" Width="1" Height="1" VirtualKey="80" />
                        <Key DisplayText="&#xf55a;" KeyType="Special" Width="2" Height="1" VirtualKey="8" />
					</Keys> 
                </Row> 
                <Row> 
                    <Keys>
	                    <EmptySpace Width="0.5" Height="1" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="65" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="83" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="68" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="70" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="71" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="72" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="74" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="75" />
	                    <Key KeyType="Normal" Width="1" Height="1" VirtualKey="76" />
	                    <Key DisplayText="'" KeyType="Normal" Width="1" Height="1" />
						<Key DisplayText="&#xe331;" KeyType="Special" Width="1.5" Height="2" VirtualKey="13" />
                    </Keys> 
                </Row> 
                <Row> 
                    <Keys>
						<Key DisplayText="&#xf357;" KeyType="Lock" Width="1.5" Height="1" VirtualKey="20" />
						<Key KeyType="Normal" Width="1" Height="1" VirtualKey="90" />
						<Key KeyType="Normal" Width="1" Height="1" VirtualKey="88" />
						<Key KeyType="Normal" Width="1" Height="1" VirtualKey="67" />
						<Key KeyType="Normal" Width="1" Height="1" VirtualKey="86" />
						<Key KeyType="Normal" Width="1" Height="1" VirtualKey="66" />
						<Key KeyType="Normal" Width="1" Height="1" VirtualKey="78" />
						<Key KeyType="Normal" Width="1" Height="1" VirtualKey="77" />
						<Key DisplayText="," KeyType="Normal" Width="1" Height="1" />
						<Key DisplayText="." KeyType="Normal" Width="1" Height="1" />
					</Keys> 
                </Row> 
                <Row> 
                    <Keys>	               
	                    <Key DisplayText="&amp;123" KeyType="Special" Width="2" Height="1" VirtualKey="113" />
                        <Key DisplayText="" KeyType="Special" Width="10" Height="1" VirtualKey="32" />	                
					</Keys> 
                </Row> 
            </Rows> 
        </KeysLayout> 
   </Grid> 
</RadVirtualKeyboard> 

Unplanned
Last Updated: 29 Apr 2024 13:00 by Martin Ivanov

The CapsLock key should toggle only the letters. Currently, it behaves as Shift because it shows the secondary text of other keys as well (for example the number keys and their special characters). To reproduce this the ShowSecondaryText attribute of the corresponding key should be set to False.

To work this around, you can create a custom view model for the numeric keys that updates the DisplayText manually.

 

public class CustomKeyFactory : DefaultKeyFactory
{
    public override BaseKeyViewModel CreateKey(int virtualKey, KeyType keyType = KeyType.Normal, string displayText = null, double width = 1, double height = 1, int alternateVirtualKey = -1, string alternateText = null, bool showSecondaryText = false)
    {
        if (keyType == KeyType.Normal)
        {
            return new CustomRegularKeyViewModel(virtualKey, width, height, showSecondaryText, displayText);
        }
        return base.CreateKey(virtualKey, keyType, displayText, width, height, alternateVirtualKey, alternateText, showSecondaryText);
    }
}

public class CustomRegularKeyViewModel : RegularKeyViewModel
{
    public CustomRegularKeyViewModel(int virtualKey, double keyWidth, double keyHeight, bool showSecondaryText, string displayText = null) : base(virtualKey, keyWidth, keyHeight, showSecondaryText, displayText)
    {
    }

    public override void Update(IKeyUpdateContext context)
    {            
        base.Update(context);
        if (this.VirtualKey >= 48 && this.VirtualKey <= 57) // you may need to extend the if-statement to check for other keys as well
        {
            this.DisplayText = context.IsShiftActive ? this.ShiftText : this.LowerText;
        }
    }
}

 

Unplanned
Last Updated: 17 Apr 2024 07:23 by Martin Ivanov
Created by: Martin Ivanov
Comments: 0
Category: VirtualKeyboard
Type: Feature Request
0
Add an event on the RadVirtualKeyboard class that is raised when a key button is pressed. For example, KeyPressed or something like this. 
Won't Fix
Last Updated: 15 Feb 2024 15:59 by Petar
The keyboard layout is not correct when using the Polish culture.
Completed
Last Updated: 28 Jun 2023 13:30 by ADMIN
Release LIB 2023.1.703 (3 Jul 2023)

The Header property setting is replaced with a default value when the RadVirtualKeyboardWindowAutomationPeer is created. This happens on environments where the automation peers creation kicks-in. Like, on touch devices, when a screen narrator application is used, on visual elements inspection with some tools (like UISpy or Snoop) or any other automation testing that requires automation peers. 

In that case, instead of the user defined Header value, the window's header is replaced with "RadVirtualKeyboardWindow" string.

To work this around, disable the automation peers:

public partial class App : Application 
{ 
    public App() 
    { 
        AutomationManager.AutomationMode = AutomationMode.Disabled; 
        this.InitializeComponent(); 
    } 
} 

Unplanned
Last Updated: 22 May 2023 12:19 by Patrick
Hook to external keyboard special keys degrades performance the control so it might be useful to provide an API to disable this functionality.
Completed
Last Updated: 24 May 2023 08:19 by ADMIN
Release R2 2023
Some keyboards and OS settings (like AZERTY + French culture) support diacritic symbols. RadVirtualKeyboard doesn't display these properly. Some of the diacritics are duplicated on the key adjacent to the original key. 
Completed
Last Updated: 20 Apr 2023 07:13 by ADMIN
Release LIB 2023.1.424 (24 Apr 2023)
Pressing keys on the physical keyboard highlights the corresponding button in the VirtualKeyboard control. For example, if you press Ctrl, you will see that the Ctrl button in the UI will change its background while the key is pressed. This doesn't work for the Alt key. The button in the UI doesn't get highlighted. 
Unplanned
Last Updated: 05 Apr 2023 09:13 by Martin Ivanov
On English keyboard the AltGr key is treated as Right Alt key which behaves the same as the standard (Left) Alt key. However, on some cultures (like French) the AltGr key is used as a modifier that toggles few special keys. This behavior is similar to holding the Shift key, but the set of special keys that are activated is different.

Currently, RadVirtualKeyboard doesn't support the special behavior of the AltGr key.
Completed
Last Updated: 20 Jun 2022 13:27 by ADMIN
Release R2 2022 SP1
When the global culture is set to non US and its decimal separator is not "." parsing the default XML for keyboard is wrong and this results in incorrect button sizes of the virtual keayboard.
Completed
Last Updated: 07 Aug 2022 10:10 by ADMIN
Created by: Paolo
Comments: 2
Category: VirtualKeyboard
Type: Bug Report
0

Our company would like to use in a greenfield project this new UI component.

On our machine, in both our sample projects and even running your official WPF Demo App, the virtualkeyboard component does not render its buttons correctly.

 

This is our sample xaml:

 

<Window x:Class="TelerikWpfApp1.MainWindow"
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
                Title="MainWindow" Height="350" Width="525">
        <Grid>
        <telerik:RadVirtualKeyboard DefaultKeyboardLayout="Compact" HorizontalAlignment="Stretch" />
    </Grid>
</Window>

 

In the attachment you can see how the virtualkeyboard renders ootb. Are we missing something?