区分键盘 MSR 和触摸屏键盘 Windows 10 中的通用窗口应用程序

本文关键字:键盘 窗口 应用程序 Windows MSR 触摸屏 | 更新日期: 2023-09-27 18:31:54

我在Windows 10的通用Windows应用程序中有一个xaml页面。页面包含一个文本框。该应用程序使用键盘MSR(磁条阅读器)刷卡。

现在,当我专注于文本框并在 MSR 中刷卡时,它会打印文本框中的所有数据。BUt,我希望用户只需从触摸屏键盘点击文本并将其限制为 MSR。

请帮忙。

区分键盘 MSR 和触摸屏键盘 Windows 10 中的通用窗口应用程序

    private DispatcherTimer _handledTimer;
    private bool _isHandled = false;
    private bool _isShift = false;
    private void txtEmailKeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)
    {
        if (e.Key == VirtualKey.Shift)
        {
            _isShift = true;
        }
        else
        {
            if (ToChar(e.Key, _isShift))
            {
                _isHandled = true;
                StartDispatcher();
            }
            _isShift = false;
        }
        e.Handled = _isHandled;
    }

    public void StartDispatcher()
    {
        if (_handledTimer == null)
        {
            _handledTimer = new DispatcherTimer();
            _handledTimer.Interval = new TimeSpan(0, 0, 1);
            _handledTimer.Tick += handledTimerTick;
        }
        _handledTimer.Stop();
        _handledTimer.Start();
    }
    private void handledTimerTick(object sender, object e)
    {
        _handledTimer.Stop();
        _handledTimer = null;
        _isHandled = false;
    }
    private bool ToChar(VirtualKey key, bool shift)
    {
        bool hasSpecificChar = false;
        // look for %
        if (53 == (int)key && shift)
        {
            hasSpecificChar = true;
        }
        // look for ';'
        if (186 == (int)key)
        {
            hasSpecificChar = true;
        }
        return hasSpecificChar;
    }