You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Avalonia 11是否支持Windows 10原生屏幕键盘功能?

Avalonia 11中Windows 10原生屏幕键盘支持说明

Avalonia 11默认不自动触发Windows 10原生屏幕键盘(OSK),但可以通过手动调用系统API实现该功能,以下是具体说明和解决方案:

核心问题解析

  • 原生Win32/UWP应用(如记事本)会和系统输入场景联动,当文本框聚焦且系统处于触摸模式(或开启OSK自动弹出设置)时,系统会自动触发OSK。但Avalonia作为跨平台框架,默认未集成这一系统级触发逻辑。
  • InputMethod.IsInputMethodEnabled属性仅针对中日韩文等IME输入法的启用/禁用,与原生OSK弹出无直接关联,因此设置该属性无效。
  • ITextInputMethodImpl接口在Avalonia 11中已标记为internal且过时,官方不再推荐通过该接口定制输入逻辑,无需尝试此路径。

实现方案

通过监听文本输入组件的聚焦事件,手动调用Windows系统命令弹出OSK:

  1. 基础实现
    在TextBox的GotFocus事件中启动osk.exe:
using System.Diagnostics;
using Avalonia.Controls;
using Avalonia.Input;

private void TextBox_GotFocus(object sender, GotFocusEventArgs e)
{
    // 检查OSK是否已运行,避免重复启动
    var processes = Process.GetProcessesByName("osk");
    if (processes.Length == 0)
    {
        Process.Start(new ProcessStartInfo("osk.exe") { UseShellExecute = true });
    }
}
  1. 优化体验
  • 可结合系统触摸状态判断,仅在触摸场景下弹出OSK,避免非触摸模式下干扰操作。
  • 在文本框失去焦点时,可选择关闭OSK(通过Process.Kill()),但需注意用户可能仍在其他输入场景使用OSK,需谨慎处理。

补充说明

若希望全局强制所有应用弹出OSK,可通过Windows系统设置开启:

进入「设置」→「轻松使用」→「键盘」→ 开启「在我点击输入框时显示触摸键盘」

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:27:19