首页 > 其他分享 >win11 rbr

win11 rbr

时间:2023-04-03 23:44:05浏览次数:45  
标签:key max rbr br th keyboard win11 axis

安装Vjoy软件和FreePIE

需要需要把
C:\Program Files\vJoy\x86 目录下的 vJoyInterface.dll 与 vJoyInterfaceWrap.dll
复制到 C:\Program Files (x86)\FreePIE 目录下覆盖同名文件
就是freepie里面和vjoy联动的文件太旧了。

freepie复制下面的脚本并 run script即可。

m_sens = 40.0 # 鼠标灵敏度,数值越大转向越快
m_redu = 2 # 中心缩减,合理数值范围1-50,设置为1时即无中心缩减。

改动这2个即可。

from ctypes import *
user32 = windll.user32 # 调用鼠标锁定功能所需库

if starting:
	# 功能开关,True为开启,False为关闭
	vjoyaxis = True # 转向轴与踏板开关
	mouselock = False # AC鼠标位置锁定(隐藏)专属开关(这里不要修改,后面可以设置开关快捷键)
	# 辅助开关
	autocut = False # 升档自动断油
	autoblip = False # 降档自动补油
	# 映射vJoy设备号
	v = vJoy[0]
	# vjoy最大轴行程,勿改!
	a_max = 4 + v.axisMax
	a_min = -4 - v.axisMax
	# 鼠标转向
	m_sens = 22.0 # 鼠标灵敏度,数值越大转向越快  
	m_redu = 4 # 中心缩减,合理数值范围1-50,设置为1时即无中心缩减。
	steering = 0 # 勿改!
	center_redu = 1 # 勿改!
	# 油门
	th_axis = a_min # 勿改!
	th_inc = 3000 # 油门提升速率,数值越大油门提升越快
	th_dec = 3000 # 松油速率,数值越大松油越快
	th_max = a_max # 控制油门实时行程限制,勿改!
	# 刹车
	br_axis = a_min # 勿改!
	br_inc = 3000 # 刹车提升速率,数值越大油门提升越快
	br_dec = 3000 # 松刹速率,数值越大松刹越快
	br_max = a_max # 控制刹车实时行程限制,勿改!
	# 手刹
	ha_axis = a_min # 勿改!
	ha_inc = 3000
	ha_dec = 3000
	# 离合
	cl_axis = a_min # 勿改!
	cl_inc = 6000
	cl_dec = 6000
	# 自动断油间隔与自动回油速率(仅在踩住油门并升挡时有效)
	cut_rate = 35000 # 自动回油速率,合理数值范围 500 - 10000,设置35000为瞬间回满油
	cut_min = 15 # 最小断油间隔,数值越低断油时间越短
	cut_max = 35000 / cut_rate + cut_min + 4 # 勿改!此公式用于避免自动回油速率与油门速率之间发生冲突
	# 自动补油
	blip_m = 0.6 # 自动补油的油门行程。数值范围 0.0 - 1.0,0.0即无补油,0.5即油门踩一半
	a_blip = a_max * 2 * blip_m - a_max # 勿改!用于计算
	# 油门实时行程限制
	tlimit = 1.0 # 数值范围 0.0 - 1.0,0.9即油门踩90%
	th_limit = a_max * 2 * tlimit - a_max # 勿改!用于计算
	# 换挡计时(用于计算自动断油)
	stimer = 0 # 勿改!
	etimer = cut_max + 100 # 达到最大值后自动终止计时

#======== 键位映射 ========#
# 开关
toggle_mouselock = keyboard.getPressed(Key.End) # AC用鼠标锁定(隐藏)
key_assists_on = keyboard.getPressed(Key.NumberPad1) # 开启自动断油辅助
key_assists_off = keyboard.getPressed(Key.NumberPad3) # 关闭自动断油辅助
# 车辆控制
key_throttle = keyboard.getKeyDown(Key.A) # 油门    
key_brake = keyboard.getKeyDown(Key.S) # 刹车
key_handbrake = keyboard.getKeyDown(Key.Space) # 手刹
key_clutch = keyboard.getKeyDown(Key.W) # 离合
key_centerx = mouse.getButton(2) # 转向回中
key_shiftup =  keyboard.getKeyDown(Key.LeftShift)# 升档
ashift_up_key = mouse.getPressed(0) # 升档计时,同升档键,但使用getPressed状态
key_shiftdown = keyboard.getKeyDown(Key.D)  # 降档
#key_light = keyboard.getKeyDown(Key.L)  # 灯光
# 刹车实时行程限制
bl_70 = keyboard.getPressed(Key.NumberPad7)
bl_75 = keyboard.getPressed(Key.NumberPad4)
bl_80 = keyboard.getPressed(Key.NumberPad8)
bl_85 = keyboard.getPressed(Key.NumberPad5)
bl_90 = keyboard.getPressed(Key.NumberPad9)
bl_95 = keyboard.getPressed(Key.NumberPad6)
no_bl = keyboard.getPressed(Key.NumberPadPeriod)
# 油门实时行程限制
key_throttle_limit = keyboard.getKeyDown(Key.X) # 只有按下此键时才会限制油门行程

#======== 开关(勿改) ========#
if toggle_mouselock:
	mouselock = not mouselock
if key_assists_on: 
	autocut = True
if key_assists_off:
	autocut = False

#======== 转向轴与踏板 ========#
if (vjoyaxis):
	#======== 鼠标锁定 ========#
	if (mouselock):
		user32.SetCursorPos(100 , 5000) # 鼠标在屏幕上的像素坐标(x, y),AC专用
	# 鼠标转向
	if steering > 0:
		center_redu = m_redu ** (1 - (steering / a_max))
	elif steering < 0:
		center_redu = m_redu ** (1 - (steering / a_min))
	steering += (mouse.deltaX * m_sens) / center_redu
	if steering > a_max:
		steering = a_max
	elif steering < a_min:
		steering = a_min
	if key_centerx:
		steering = 0
	# 油门轴
	if key_throttle:
	    th_axis += th_inc
	else:
	    th_axis -= th_dec
	if th_axis > th_max:
	    th_axis = th_max
	elif th_axis < a_min:
	    th_axis = a_min
	# 刹车轴
	if key_brake:
	    br_axis += br_inc
	else:
	    br_axis -= br_dec
	if br_axis > br_max:
	    br_axis = br_max
	elif br_axis < a_min:
	    br_axis = a_min
	# 手刹轴
	if key_handbrake:
	    ha_axis += ha_inc
	else:
	    ha_axis -= ha_dec
	if ha_axis > a_max:
	    ha_axis = a_max
	elif ha_axis < a_min:
	    ha_axis = a_min
	# 离合轴
	if key_clutch:
	    cl_axis += cl_inc
	else:
	    cl_axis -= cl_dec
	if cl_axis > a_max:
	    cl_axis = a_max
	elif cl_axis < a_min:
	    cl_axis = a_min
	# 辅助
	if (autocut): # 自动断油
		if key_throttle and ashift_up_key:
			th_axis = a_min
		elif key_throttle and stimer > 0 and stimer < cut_min:
			th_axis = a_min
		elif key_throttle and stimer > cut_min and stimer < cut_max:
			th_axis += cut_rate - th_inc
	if (autoblip): # 自动补油
		if key_shiftdown:
			th_axis = a_blip
	# 刹车行程限制
	if bl_70:
		br_max = a_max * 0.4
	if bl_75:
		br_max = a_max * 0.5
	if bl_80:
		br_max = a_max * 0.6
	if bl_85:
		br_max = a_max * 0.7
	if bl_90:
		br_max = a_max * 0.8
	if bl_95:
		br_max = a_max * 0.9
	if no_bl:
		br_max = a_max
	if key_throttle_limit:
		th_max = th_limit
	else:
		th_max = a_max

#======== vjoy 轴与按钮映射(勿随便修改) ========#
v.x = int(round(steering))
v.y = th_axis
v.z = br_axis
v.ry = ha_axis
v.rx = cl_axis
v.setButton(0,key_shiftup)
v.setButton(1,key_shiftdown)
#v.setButton(2,key_light)
#======== 换挡计时 ========#
if ashift_up_key:
	stimer = 0
elif stimer < etimer: # 结束计时
	stimer += 1

#======== 调试 ========#
# 不调试时请注释掉,不然CPU使用率增加50%-80% 
#diagnostics.watch(v.x)	# steering
#diagnostics.watch(v.y)	# throttle
#diagnostics.watch(v.z)	# brake
#diagnostics.watch(v.ry) # handbrake
#diagnostics.watch(v.rx) # clutch
#diagnostics.watch(v.axisMax) # vjoy axis max range
#diagnostics.watch(stimer) # shifting timer

#======== 附录 & 例子 ========#
# vjoy轴: x, y, z, rx, ry, rz, slider, dial
# 键盘映射: keyboard.getKeyDown(Key.A); keyboard.getPressed(Key.A)
# 鼠标按钮映射: mouse.getButton(0); mouse.getPressed(1)
# 括弧内数字对应的鼠标按钮: 0 = 左键; 1 = 右键; 2 = 中键; etc.
# FreePIE有两种按键状态,第一种是按下按键后就执行相关代码并结束,第二种是按住按键时持续执行相关代码。
# 第一种的相关代码为: keyboard.getPressed() or mouse.getPressed()
# 第二种的相关代码为: keyboard.getKeyDown() or mouse.getButton()

#======== credits ========#
# 大部分vjoy轴逻辑代码源自此贴 https://www.lfs.net/forum/post/1862759
# 鼠标锁定代码源自 https://bytes.com/topic/python/answers/21158-mouse-control-python
# 代码重写、注释、自动断油、补油功能等 by threers(3Rs)
# last update: 2018-11

标签:key,max,rbr,br,th,keyboard,win11,axis
From: https://www.cnblogs.com/zdjvimrc/p/17284949.html

相关文章

  • Win11右键菜单如何直接默认显示更多选项
    Win11右键菜单如何直接默认显示更多选项1、首先用鼠标右键点击“开始”按钮(或者按Win+X键),选择点击“Windows终端(管理员2、然后在终端应用程序里粘贴这串代码【reg.exeadd"HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32"/f/......
  • VC6 在win11下运行出现 LINK : fatal error LNK1168: cannot open Debug/test.exe for
    写在前面vc6下载地址:https://softdown01.rbread04.cn/down/VC6.0green.rar?timestamp=6429444b&auth_key=e4fc373a1342be9ce2d6802419980ade注意:如果是win11则记得修改msdev名字修改兼容性和管理员运行才行 问题:最近用vc6学习逆向的时候出现的,记录下,方便查阅:LINK:fatal......
  • 【月伴流星】Win10+Win11 22h2 专业精简版合集2023.04(速度贼快)
     本精简版为重度精简,不支持更新!删除了所有WinSxS内的组件硬链接,使WinSxS的体积由原来的的6G一下子缩小到60M左右,完全丧失了组件恢复功能,相当于删除了组件备份!而保留的下来组件完全不受影响均可正常使用!------------------------------------------系统为Win10+Win11精简专业版合......
  • 常见dos命令 win11
    打开CMD的方式右键win,选择终端Win键+R,输入CMD打开控制台在任意文件夹下,shift+右键,选择在终端中打开在资源管理器地址栏前加上CMD路径管理员方式运行:选择以管理员方式运行常用的Dos命令#切换盘符:<目标盘符>:#查看当前目录下的所有文件:dir#切换目录:cd<目标路径>。例如:......
  • windows使用/服务(10)Win11预览版退回正式版方法介绍
    闲的没事把系统win11:21H2正式稳定版本升级到22H2内部测试版,不太习惯而且还是个滚动发行版不稳定,回退到之前版本Win11将预览版返回到正式版的方法1.右击“计算机”选择“属性”,选择“winodws更新”选择“高级选项”。2.然后点击“恢复”,再点击“高级启动”下的“重启”。3.......
  • 使用蓝牙自动解锁或锁定win11
    蓝牙配对你的手机,安卓或者苹果都可以。当你手机离开一定距离后电脑将自动锁定。......
  • TIdHTTPWebBrokerBridge替换成mormot底层
    目前使用案例是git开源项目horse改动思路大概为http请求被WebBrokerDispatch函数转发到了WebModule中进行后续处理。替换如下单元源码即可将horse项目的indy底层改成morm......
  • 电脑升级到Win11后,插入耳机不识别问题解决方案?
    1、在网上搜索Realtek高清音频管理器下载 2、可以选择第一个点击下载安装,重启电脑后即可修复 ......
  • win11+CUDA-11.7.1+cudnn-8.8.0
    CUDA安装+vsstdio2022配置先进行CUDA-11.7.1安装https://developer.nvidia.com/cuda-11-7-1-download-archive在NVIDIA-CUDA下载地址下载win.exe安装包完成后,进行安装(......
  • ESXI 6.0部署win11虚拟机
    ESXI6.0部署win11虚拟机其实我很少写部署类的文档,但部署下来有点坑咯,从昨天下午到今早,该解决的都解决了。部署win11环境是因为我们公司的系统,客户反馈在win11下......