相关文档地址:https://docs.microsoft.com/en-us/windows/win32/xinput/getting-started-with-xinput

需要的头文件:Xinput.h

lib 文件:Xinput.lib

最多同时支持 4 个手柄,由于做工等问题,手柄静止时摇杆可能并不在 0 上,两个 trigger 的数据范围是 0~255,两个摇杆是 -32768~32767。

官方文档里还有部分关于 dead zoom 的描述,本例没有考虑

#include <cstdio>
#include <Windows.h>
#include <Xinput.h>using namespace std;int GetControllorNum()
{DWORD dwResult;int num = 0;for (DWORD i = 0; i < XUSER_MAX_COUNT; i++) //up to 4 controllors{XINPUT_STATE state;ZeroMemory(&state, sizeof(XINPUT_STATE));// Simply get the state of the controller from XInput.dwResult = XInputGetState(i, &state);if (dwResult == ERROR_SUCCESS){// Controller is connected printf("one\n");num++;}else{printf("no\n");// Controller is not connected }}return num;
}int main()
{int controllorNum = GetControllorNum();if (controllorNum > 0){XINPUT_STATE state, state2;ZeroMemory(&state, sizeof(XINPUT_STATE));ZeroMemory(&state2, sizeof(XINPUT_STATE));// Simply get the state of the controller from XInput.DWORD dwResult = XInputGetState(0, &state);while (true){dwResult = XInputGetState(0, &state2);if (state2.dwPacketNumber != state.dwPacketNumber){printf("chaned\n");state = state2;state2.Gamepad.bLeftTrigger;if (state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP){printf("XINPUT_GAMEPAD_DPAD_UP");}if (state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_DOWN){printf("XINPUT_GAMEPAD_DPAD_DOWN");}if (state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT){printf("XINPUT_GAMEPAD_DPAD_LEFT");}if (state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_RIGHT){printf("XINPUT_GAMEPAD_DPAD_RIGHT");}if (state.Gamepad.wButtons & XINPUT_GAMEPAD_START){printf("XINPUT_GAMEPAD_START");}if (state.Gamepad.wButtons & XINPUT_GAMEPAD_BACK){printf("XINPUT_GAMEPAD_BACK");}if (state.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB){printf("XINPUT_GAMEPAD_LEFT_THUMB");}if (state.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB){printf("XINPUT_GAMEPAD_RIGHT_THUMB");}if (state.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_SHOULDER){printf("XINPUT_GAMEPAD_LEFT_SHOULDER");}if (state.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_SHOULDER){printf("XINPUT_GAMEPAD_RIGHT_SHOULDER");}if (state.Gamepad.wButtons & XINPUT_GAMEPAD_A){printf("XINPUT_GAMEPAD_A");}if (state.Gamepad.wButtons & XINPUT_GAMEPAD_B){printf("XINPUT_GAMEPAD_B");}if (state.Gamepad.wButtons & XINPUT_GAMEPAD_X){printf("XINPUT_GAMEPAD_X");}if (state.Gamepad.wButtons & XINPUT_GAMEPAD_Y){printf("XINPUT_GAMEPAD_Y");}printf(" pressed\n");XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE;printf("LeftTrigger: %d\n", state.Gamepad.bLeftTrigger);printf("RightTrigger: %d\n", state.Gamepad.bRightTrigger);printf("ThumbLX: %d\n", state.Gamepad.sThumbLX);printf("ThumbLY: %d\n", state.Gamepad.sThumbLY);printf("ThumbRX: %d\n", state.Gamepad.sThumbRX);printf("ThumbRY: %d\n", state.Gamepad.sThumbRY);}else{printf("no change\n");}Sleep(1000);}}else{printf("no controllor connected\n");}return 0;
}

Xbox one 手柄 api Xinput相关推荐

  1. xbox蓝牙手柄驱动_如何通过蓝牙将Xbox One控制器连接到Windows

    xbox蓝牙手柄驱动 The latest version of the Xbox controller-the one included with the Xbox One S and the up ...

  2. xbox one 手柄在ubuntu下的使用和开发

    在ubuntu20.04环境下使用xbox one 手柄和无线适配器 1. 安装dkms 2. 安装xone 2.1 下载源码 2.2 安装xone 2.3 下载固件 3. 手柄测试 4. xbox手 ...

  3. linux安装xbox无线手柄,ROS配置和使用Xbox One无线手柄

    标签: ROS配置和使用Xbox One无线手柄 环境:Ubuntu16.04 + ROS kinetic 安装joy package joy package为通用的Linux操纵杆提供了ROS驱动, ...

  4. android xbox 手柄,Xbox One手柄将正式适配安卓9.0系统 《堡垒之夜》第一时间支持...

    今天(8月27日)来自谷歌官方消息确认安卓9.0系统即Android Pie将对Xbox One手柄提供完整支持,修复此前长期存在的Xbox One手柄按键映射问题,安卓9.0系统将于今年第3季度起陆 ...

  5. Xbox One手柄 + Xbox Wireless Adapter PC无线适配器驱动安装、配对全流程

    以下步骤在Windows 7系统中操作.XBox One手柄+无线适配器并非仅只能在Windows 10中使用. 一点感想:微软的XBoxOne手柄实在是好东西,但产品使用说明与文档实在太垃圾,翻遍官 ...

  6. xBox one 手柄RB 键 接触不良/反应不灵 抢救方法(软件)

    xBox one 手柄RB 键 接触不良/反应不灵 抢救方法(软件) 目录 xBox one 手柄RB 键 接触不良/反应不灵 抢救方法(软件) 文章适用范围 一.步骤 1.下载xbox access ...

  7. 配置微软Xbox One手柄到ROS实现通讯控制

    环境:Ubuntu16.04 + ROS kinetic 安装joy package joy package为通用的Linux操纵杆提供了ROS驱动,它包括了一个joy_node节点,可以让Linux ...

  8. ESP32 经典蓝牙 连接 Xbox ONE 手柄

    文章目录 软件架构 框架/framework: 组件/components: branch Bytheway Code 基于ESPIDF HID例程修改而来,使用经典蓝牙和Xbox ONE 手柄连接并 ...

  9. Raspberry PI连接XBOX ONE 手柄

    Raspberry PI 连接XBOX ONE 手柄 安装XBOX 手柄驱动 禁用(ERTM) bluetoothctl 操作 安装XBOX 手柄驱动 sudo apt install xboxdrv ...

最新文章

  1. paddleocr ‘bytes‘ object has no attribute ‘shape‘
  2. Spark- 使用第三方依赖解析IP地址
  3. bzoj1433: [ZJOI2009]假期的宿舍
  4. boost::binary_search相关的测试程序
  5. arcgis python脚本实现从界面选择输入输出_ArcGIS Python脚本使用
  6. verilog驱动ADC0809包括仿真测试
  7. 24 | 二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树?
  8. Linux下查看/管理当前登录用户及用户操作历史记录
  9. 机器学习实战:PCA降维 样本协方差
  10. 使用强大的 Mockito 来测试你的代码
  11. ansible基本模块-shell
  12. 购物商城Web开发第十天
  13. asp.net core 支付宝支付( 电脑2.0)
  14. Restful/Soap风格比较
  15. java Json转string方法
  16. 视频教程-PHP开发进阶课程docker入门与进阶-PHP
  17. 基于微信小程序的图书馆管理系统.rar(论文+源码)
  18. ShadowGun之Shader分析
  19. Online Judge系统(简称OJ)
  20. K3 ERP 系统财务管理 - 账结法、表结法

热门文章

  1. SSOJ 2316 面积【DFS/Flood Fill】
  2. 谈一谈|MkDocs介绍及应用
  3. Navicat mysql 收费_没钱买navicat,就用免费的phpmyadmin吧
  4. maven 使用tomcat插件启动报错 A child container failed during start
  5. java基础详细讲解
  6. [HIHO1560] H国的身份证号码II(dp,计数,矩阵快速幂)
  7. jsevent(js event对象)
  8. gps电文解析matlab,MATLAB读取GPS的RINEX格式的导航电文
  9. 怎么修改FTP服务器绑定的IP地址
  10. java JDBC使用简易教程