as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持

使用inputd-cli模拟设备输入

使用inputd-cli模拟设备输入

inputd-cli是一个命令行工具,使您能够通过模拟用户输入和系统控制以编程方式与Fire TV设备和Vega虚拟设备进行交互。该工具对于自动测试、设备调试和开发工作流程至关重要,在这些工作流程中,您需要在没有物理交互的情况下控制设备行为。

关键功能。

  • 输入模拟 - 发送按下按钮、触摸事件、滑动和鼠标交互
  • 文本输入 - 将文本字符串直接注入设备
  • 屏幕交互 - 检索屏幕尺寸并执行基于手势的导航
  • 自动化支持 - 为脚本和批处理操作提供控制台模式

先决条件

  1. 通过USB或TCP/IP建立VDA连接。

    请参阅通过TCP/IP启用VDA页面中的说明。

  2. 为您的访问级别获取相应的安全权限。

    不同的安全上下文提供不同级别的inputd-cli功能访问权限。检查您的当前权限以了解您的环境中有哪些命令可用。

    安全上下文 获取信息 输入自动化
    app_user
    开发模式shell
  3. 在Fire TV设备上启用开发者模式(推荐)。

    请参阅配置开发者模式页面中的说明。

  4. 对于Vega虚拟设备用户,启用开发者模式以获得完整命令访问权限:

    a. 连接到虚拟设备shell:

    已复制到剪贴板。

    kepler device shell -d VirtualDevice
    

    b. 启用开发者模式:

    已复制到剪贴板。

    vsm developer-mode enable
    

    默认(受限)模式仅显示:get_camera_cover_open_close、get_mic_state、get_screen_size

    开发者模式(完整功能)显示所有命令:touch、swipe、button_press、send_text 等。

通过VDA shell进行访问

该工具内置于Fire TV设备系统,无需单独安装。您可以通过VDA shell环境访问inputd-cli

已复制到剪贴板。

vda shell inputd-cli --help

示例:(注意:界面显示内容均为英文,此处中文译文仅供参考)

vda shell inputd-cli -h                                                                                                                   

inputd cli
    用法:
      inputd-cli start
      inputd-cli button_press <按键> ([short|long|superLong|repeat]|--holdDuration <持续时间>)
      inputd-cli touch <x> <y> [<x2>] [<y2>] [<x3>] [<y3>] [<x4>] [<y4>]
      inputd-cli swipe <x_start> <y_start> <x_end> <y_end> [<x_start2>] [<y_start2>] [<x_end2>] [<y_end2>] [<x_start3>] [<y_start3>] [<x_end3>] [<y_end3>] [<x_start4>] [<y_start4>] [<x_end4>] [<y_end4>] [--interval <时间间隔>] [--delay-release]
      inputd-cli gesture_swipe_down <x> <y> [--distance <像素距离>]
      inputd-cli gesture_swipe_up <x> <y> [--distance <像素距离>]
      inputd-cli gesture_swipe_left <x> <y> [--distance <像素距离>]
      inputd-cli gesture_swipe_right <x> <y> [--distance <像素距离>]
      inputd-cli mouse_move <x> <y>
      inputd-cli mouse_click <x> <y> [<按钮>]
      inputd-cli mouse_button_press [<按钮>]
      inputd-cli get_camera_cover_state [--deprecated]
      inputd-cli get_camera_cover_open_close
      inputd-cli get_mic_state
      inputd-cli get_client_list
      inputd-cli send_text <text> [--interval <时间间隔>]
      inputd-cli get_screen_size
    选项:
      -h --help                     显示使用情况
      --version                     显示版本
      --interval <时间间隔>    每次动作之间的时间间隔,单位微秒[默认: 对于swipe为20000 ,对于send_text为100]
      --delay-release               延迟释放滑动手势以实现可预测的滚动距离
      --distance <像素距离>      移动距离,像素为单位[默认: 130]
      --holdDuration <持续时间>     按下向下按钮和向上按钮之间的持续时间,毫秒为单位
      <按钮>                      要按下的鼠标按钮 [默认: "BTN_LEFT"]

密钥代码参考

您可以在linux-event-codes.h处找到密钥代码列表。

要发送按下返回键的操作,可运行以下命令:

已复制到剪贴板。

vda shell inputd-cli button_press KEY_BACK

常用导航键: KEY_DOWN、KEY_UP、KEY_ENTER、KEY_LEFT、KEY_RIGHT。

要发送文本输入,可运行以下命令:

已复制到剪贴板。

vda shell inputd-cli send_text 'hello\ world\!'

更改隐私状态

要在软件级别控制Fire TV设备上的摄像头和麦克风隐私设置,可使用以下命令:

已复制到剪贴板。

vda shell inputd-cli set_mic_state disabled

使用控制台模式

要为多个命令建立永久连接而不每次都重新连接,可使用以下命令:

vda shell inputd-cli start
// 输出
欢迎使用Inputd命令行!
请键入'h'或任何有效命令继续
inputd-cli >

用法示例:

inputd-cli > h
inputd cli
    用法:
      button_press <按键> ([short|long|superLong|repeat]|holdDuration <持续时间>)
      button_hold <按键>
      button_release <按键>

      touch <x> <y>
      touch_hold <x> <y>
      touch_release

      swipe <x1> <y1> <x2> <y2> [interval <时间间隔>]
      gesture_swipe_down <x> <y> [distance <像素距离>]
      gesture_swipe_up <x> <y> [distance <像素距离>]
      gesture_swipe_left <x> <y> [distance <像素距离>]
      gesture_swipe_right <x> <y> [distance <像素距离>]
      mouse_move <x> <y>
      mouse_click <x> <y> [<按钮>]
      mouse_button_press [<按钮>]
      mouse_button_hold [<按钮>]
      mouse_button_release [<按钮>]

      get_camera_cover_state
      get_mic_state

      set_priority <值>
      set_permission_level <值>

      get_client_list

      send_text <文本>

      get_screen_size

    选项:
      h, help       输出使用情况信息
      v, version    输出版本信息
      x, exit       Ctrl + C的替代方法
      interval <时间间隔>    每次动作之间的时间间隔,单位微秒[默认: 20000]
      distance <像素距离>      移动距离,像素为单位 [默认: 130]
      holdDuration <持续时间>     按下向下按钮和向上按钮之间的持续时间,以毫秒为单位
      <按钮>                    要按下的鼠标按钮 [默认: "BTN_LEFT"]

使用脚本自动输入

为避免创建多个客户端连接,请将命令链接在一起。例如,要按住按钮并重复按下按钮,可使用以下命令:

已复制到剪贴板。

vda shell "{ echo -e "button_hold KEY_LEFT"; sleep 0.5; for i in {1..30}; do echo -e "button_press KEY_DOWN"; sleep 0.5; done; echo -e "button_release KEY_LEFT"; echo exit; } | inputd-cli start" 

此示例按住向左按钮,每0.5秒按下30次向下按钮(总计15秒),然后松开向左键并退出。

同时按下多个按钮

要模拟同时按下多个按钮的操作,请按住这些按钮,等待片刻,然后松开。例如:

已复制到剪贴板。

vda shell "{ echo -e "button_hold KEY_BACK"; echo -e "button_hold KEY_MENU"; sleep 3; echo -e "button_release KEY_BACK"; echo -e "button_release KEY_MENU"; echo exit; } | inputd-cli start"

这将按住返回菜单按钮3秒钟,然后松开这两个按钮并退出。


Last updated: 2025年10月7日