├── DCS_KA
├── .vs
│ └── DCS_DataLink
│ │ ├── v15
│ │ ├── Server
│ │ │ └── sqlite3
│ │ │ │ ├── db.lock
│ │ │ │ └── storage.ide
│ │ └── .suo
│ │ └── v16
│ │ ├── Server
│ │ └── sqlite3
│ │ │ ├── db.lock
│ │ │ └── storage.ide
│ │ └── .suo
├── DCS_DataLink
│ ├── obj
│ │ └── Debug
│ │ │ ├── DCS_DataLink.csproj.CopyComplete
│ │ │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
│ │ │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
│ │ │ ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
│ │ │ ├── DCS_DataLink.csproj.CoreCompileInputs.cache
│ │ │ ├── DCS_DataLink.exe
│ │ │ ├── DCS_DataLink.pdb
│ │ │ ├── DCS_DataLink.Form1.resources
│ │ │ ├── DesignTimeResolveAssemblyReferences.cache
│ │ │ ├── DCS_DataLink.Properties.Resources.resources
│ │ │ ├── DCS_DataLink.csproj.GenerateResource.cache
│ │ │ ├── DCS_DataLink.csprojAssemblyReference.cache
│ │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache
│ │ │ ├── DCS_DataLink.csprojResolveAssemblyReference.cache
│ │ │ ├── .NETFramework,Version=v4.5.AssemblyAttributes.cs
│ │ │ └── DCS_DataLink.csproj.FileListAbsolute.txt
│ ├── DCS-1.ico
│ ├── app图标.ico
│ ├── 图片资源
│ │ ├── DCS-1.ico
│ │ ├── DCS-1.png
│ │ └── DCS-1~1.png
│ ├── bin
│ │ └── Debug
│ │ │ ├── DCS_DataLink.exe
│ │ │ ├── DCS_DataLink.pdb
│ │ │ ├── Microsoft.DirectX.dll
│ │ │ ├── Microsoft.DirectX.DirectInput.dll
│ │ │ └── DCS_DataLink.exe.config
│ ├── DCS_DataLink_TemporaryKey.pfx
│ ├── DLL
│ │ ├── Microsoft.DirectX.DirectInput.dll
│ │ └── Microsoft.Office.Interop.Excel.dll
│ ├── Properties
│ │ ├── Settings.settings
│ │ ├── Settings.Designer.cs
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ ├── app.manifest
│ │ └── Resources.resx
│ ├── Program.cs
│ ├── DCS_DataLink.csproj.user
│ ├── ReadMe.txt
│ ├── App.config
│ ├── DCS_DataLink.csproj
│ ├── KeyboardHook.cs
│ ├── Form1.Designer.cs
│ └── Export.lua
├── DCS_DataLink.v12.suo
├── 键盘飞行辅助程序
│ ├── Debug
│ │ ├── setup.exe
│ │ └── 键盘飞行辅助程序.msi
│ └── 键盘飞行辅助程序.vdproj
└── DCS_DataLink.sln
├── 控制指令表.xlsx
└── README.md
/DCS_KA/.vs/DCS_DataLink/v15/Server/sqlite3/db.lock:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/DCS_KA/.vs/DCS_DataLink/v16/Server/sqlite3/db.lock:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csproj.CopyComplete:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/控制指令表.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/控制指令表.xlsx
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csproj.CoreCompileInputs.cache:
--------------------------------------------------------------------------------
1 | d02bf10f72ab863d6ad89ada77390762ec70d8c9
2 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink.v12.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink.v12.suo
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/DCS-1.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/DCS-1.ico
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/app图标.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/app图标.ico
--------------------------------------------------------------------------------
/DCS_KA/键盘飞行辅助程序/Debug/setup.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/键盘飞行辅助程序/Debug/setup.exe
--------------------------------------------------------------------------------
/DCS_KA/.vs/DCS_DataLink/v15/.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/.vs/DCS_DataLink/v15/.suo
--------------------------------------------------------------------------------
/DCS_KA/.vs/DCS_DataLink/v16/.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/.vs/DCS_DataLink/v16/.suo
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/图片资源/DCS-1.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/图片资源/DCS-1.ico
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/图片资源/DCS-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/图片资源/DCS-1.png
--------------------------------------------------------------------------------
/DCS_KA/键盘飞行辅助程序/Debug/键盘飞行辅助程序.msi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/键盘飞行辅助程序/Debug/键盘飞行辅助程序.msi
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/图片资源/DCS-1~1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/图片资源/DCS-1~1.png
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/bin/Debug/DCS_DataLink.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/bin/Debug/DCS_DataLink.exe
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/bin/Debug/DCS_DataLink.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/bin/Debug/DCS_DataLink.pdb
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.exe
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.pdb
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/DCS_DataLink_TemporaryKey.pfx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/DCS_DataLink_TemporaryKey.pfx
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/bin/Debug/Microsoft.DirectX.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/bin/Debug/Microsoft.DirectX.dll
--------------------------------------------------------------------------------
/DCS_KA/.vs/DCS_DataLink/v15/Server/sqlite3/storage.ide:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/.vs/DCS_DataLink/v15/Server/sqlite3/storage.ide
--------------------------------------------------------------------------------
/DCS_KA/.vs/DCS_DataLink/v16/Server/sqlite3/storage.ide:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/.vs/DCS_DataLink/v16/Server/sqlite3/storage.ide
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/DLL/Microsoft.DirectX.DirectInput.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/DLL/Microsoft.DirectX.DirectInput.dll
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/DLL/Microsoft.Office.Interop.Excel.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/DLL/Microsoft.Office.Interop.Excel.dll
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.Form1.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.Form1.resources
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/bin/Debug/Microsoft.DirectX.DirectInput.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/bin/Debug/Microsoft.DirectX.DirectInput.dll
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/DesignTimeResolveAssemblyReferences.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DesignTimeResolveAssemblyReferences.cache
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.Properties.Resources.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.Properties.Resources.resources
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csproj.GenerateResource.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csproj.GenerateResource.cache
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csprojAssemblyReference.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csprojAssemblyReference.cache
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csprojResolveAssemblyReference.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/laomai0208/DCS-Keyboard-Assistance/HEAD/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csprojResolveAssemblyReference.cache
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttributes.cs:
--------------------------------------------------------------------------------
1 | //
2 | using System;
3 | using System.Reflection;
4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")]
5 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using System.Windows.Forms;
6 |
7 | namespace DCS_DataLink
8 | {
9 | static class Program
10 | {
11 | ///
12 | /// 应用程序的主入口点。
13 | ///
14 | [STAThread]
15 | static void Main()
16 | {
17 | Application.EnableVisualStyles();
18 | Application.SetCompatibleTextRenderingDefault(false);
19 | Application.Run(new Form1());
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/DCS_DataLink.csproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | C:\Users\雪\Desktop\|publish\
5 |
6 |
7 |
8 |
9 |
10 | zh-CN
11 | false
12 | ShowAllFiles
13 |
14 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # DCS-Keyboard-Assistance
2 | ## 项目目的与建设初衷
3 | 为了提升DCS World的广大无外设飞友的操作体验,针对俯仰、滚转和油门的键盘控制进行了优化,使键盘玩家可以通过曲线调节,定制自己的按键拟轴体验。同时希望广大飞友基于我的工程进行进一步开发,特别是我已打通的“DCS仿真数据抓取=>数据处理=>
4 | 控制指令生成=>DCS飞机控制”技术回路(参考空中加油辅助功能的实现),开开更多脑洞,或者进行飞控、火控等算法的科学研究。
5 | ## 基本原理与开发平台
6 | 本项目基于DCS World的Export.lua脚本,实现DCS数据的获取与飞机控制指令的写入(LoGetXXX与LoSetCommand函数),同时基于Visual Studio 2019,使用C#窗体程序进行玩家按键的监听与数据处理等操作。窗体程序与DCS之间通过UDP Socket进行数据传输。
7 | ## 已有功能与使用限制
8 | 目前DCS键盘辅助程序能够提供自定义的俯仰、滚转、油门按键设置,通过曲线与滑块设置模拟轴体验,同时1.0.7版本增加的空中加油辅助功能,供玩家在枭龙单机空中加油任务中尝鲜,具体的功能介绍可参考我的B站视频(https://www.bilibili.com/video/BV1iZ4y157B8)。
9 | 由于本项目使用自定义的Export.lua脚本,存在可能的开挂行为(获取敌机信息等),多数联机服务器可能会禁止玩家的连接,请尽可能单机使用;此外,由于需要使用本项目提供的Export.lua替换原有的,因此本项目与Tacview插件不兼容,望周知。
10 | ## 工程文件介绍
11 | 根目录下“控制指令表.xlsx”是我扒下来的DCS中LoSetCommand()函数的指令列表,对应的编号和功能名已列出,供二次开发使用;VS项目文档在“DCS_KA”文件夹中,使用VS2019打开“DCS_DataLink.sln”即可开始开发,由于该工程进行了发布打包,所以解决方案“DCS_DataLink”包含
12 | 两个项目,一个是工程本体“DCS_DataLink”,另一个是打包用的“键盘飞行辅助程序”。二开请直接对“DCS_DataLink”项目进行编辑即可。此外,我更改的Export.lua脚本放在DCS_KA\DCS_DataLink目录下,请自行查找与更改。
13 | ## 软著与产权声明
14 | 啥都没有,随便复制与二开,如果有幸能够帮到诸位飞友或者从事飞行器设计相关研究的小伙伴,别忘了去B站给我点个赞就行,我的ID:老麦0208。
15 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 此代码由工具生成。
4 | // 运行时版本:4.0.30319.42000
5 | //
6 | // 对此文件的更改可能会导致不正确的行为,并且如果
7 | // 重新生成代码,这些更改将会丢失。
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DCS_DataLink.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.6.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // 有关程序集的常规信息通过以下
6 | // 特性集控制。更改这些特性值可修改
7 | // 与程序集关联的信息。
8 | [assembly: AssemblyTitle("DCS_DataLink")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DCS_DataLink")]
13 | [assembly: AssemblyCopyright("Copyright © Laomai0208 2020")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // 将 ComVisible 设置为 false 使此程序集中的类型
18 | // 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
19 | // 则将该类型上的 ComVisible 特性设置为 true。
20 | [assembly: ComVisible(false)]
21 |
22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
23 | [assembly: Guid("87a7862c-1b4f-4965-8e15-527ac875b0c5")]
24 |
25 | // 程序集的版本信息由下面四个值组成:
26 | //
27 | // 主版本
28 | // 次版本
29 | // 生成号
30 | // 修订号
31 | //
32 | // 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
33 | // 方法是按如下所示使用“*”:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.6.0")]
36 | [assembly: AssemblyFileVersion("1.0.6.0")]
37 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.30204.135
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DCS_DataLink", "DCS_DataLink\DCS_DataLink.csproj", "{2590E647-DF18-4B8A-8EC6-65A153BA139B}"
7 | EndProject
8 | Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "键盘飞行辅助程序", "键盘飞行辅助程序\键盘飞行辅助程序.vdproj", "{1F1353D3-1EBF-420A-B6AF-C428265EB313}"
9 | EndProject
10 | Global
11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 | Debug|Any CPU = Debug|Any CPU
13 | Release|Any CPU = Release|Any CPU
14 | EndGlobalSection
15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
16 | {2590E647-DF18-4B8A-8EC6-65A153BA139B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
17 | {2590E647-DF18-4B8A-8EC6-65A153BA139B}.Debug|Any CPU.Build.0 = Debug|Any CPU
18 | {2590E647-DF18-4B8A-8EC6-65A153BA139B}.Release|Any CPU.ActiveCfg = Release|Any CPU
19 | {2590E647-DF18-4B8A-8EC6-65A153BA139B}.Release|Any CPU.Build.0 = Release|Any CPU
20 | {1F1353D3-1EBF-420A-B6AF-C428265EB313}.Debug|Any CPU.ActiveCfg = Debug
21 | {1F1353D3-1EBF-420A-B6AF-C428265EB313}.Release|Any CPU.ActiveCfg = Release
22 | EndGlobalSection
23 | GlobalSection(SolutionProperties) = preSolution
24 | HideSolutionNode = FALSE
25 | EndGlobalSection
26 | GlobalSection(ExtensibilityGlobals) = postSolution
27 | SolutionGuid = {AD835270-4FD5-430E-9D64-8322E58FE31B}
28 | EndGlobalSection
29 | EndGlobal
30 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/ReadMe.txt:
--------------------------------------------------------------------------------
1 | 《DCS键盘辅助程序》测试版V1.0.7beta @老麦0208
2 | 1.安装lua文件:Steam版用户将当前目录下的“Export.lua”文件复制到“C:\Users\*你的用户名*\Saved Games\DCS\Scripts”文件夹下,
3 | OpenBeta版用户将当前目录下的“Export.lua”文件复制到“C:\Users\*你的用户名*\Saved Games\DCS.openbeta\Scripts”。
4 | ****注意****对应位置没有Scripts文件的,请自行创建。
5 | 2.DCS清除键位:打开DCS Wold,清除想要驾驶的机型的“俯仰”、“滚转”以及“油门”按键,这是使用本辅助程序的基础。
6 | 3.打开辅助程序,在界面中上部,找到“俯仰+”、“俯仰-”、“滚转+”、“滚转-”、“油门+”、“油门-”六个按钮,鼠标点击之后按下你喜欢的键,设置对应键位。
7 | ****注意****若此处没有设置键位,则本程序无法使用,必须设置。个人建议上下左右箭头,油门加减分别用pageUp和pageDown,这个你们随意设置。
8 |
9 | 4.设置完成后,打开DCSworld,点击“DCS遥控打开”按钮即可开始使用。
10 | 5.其他滑块按钮的功能说明请参考我的b站视频。
11 | 6.V1.0.7beta版本相对于之前的1.0.6,增加了空中加油俯仰与油门辅助自控,点击界面“打开AAR辅助”即可体验,目前仅支持枭龙“快速行动”“空中加油”任务,
12 | 即场景里只有一个加油机和受油机,为抢先版体验,抛砖引玉,有更好的控制算法或论文的大佬,欢迎B站私信联系我或发邮箱781943524@qq.com
13 |
14 |
15 | //更新日志//
16 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
17 | 《DCS键盘辅助程序》测试版V1.0.6 @老麦0208
18 | 1.安装方式同V1.0.3。
19 | 2.解除了回中仅上下左右PgUp\PgDown键的限制,自定义按键也可以使用了。
20 |
21 | 《DCS键盘辅助程序》测试版V1.0.5 @老麦0208
22 | 1.安装方式同V1.0.3。
23 | 2.增加对枭龙油门键盘控制的支持。
24 | 3.增加摇杆苦力帽按键(注意:是按键,不是轴)的拟轴功能,专用于枭龙的目标指示器控制,步进全部为线型,可设置是否自动回中,连接摇杆自动
25 | 断开键盘按键侦测,由于F16\F18\AV8b的目标指示命令我试了一晚上没找到对应编号,故暂时仅支持JF-17。使用前请清除枭龙对应的
26 | 目标指示器摇杆按钮设置。
27 | 4.程序界面进行了一定的重构,基本功能保持一致。
28 |
29 | 《DCS键盘辅助程序》测试版V1.0.4 @老麦0208
30 | 1.安装方式同V1.0.3。
31 | 2.新增步进曲线调节“切换线型”按钮,有两种线型供大家使用,目前还不支持自定义曲线。
32 | 3.新增俯仰、滚转、油门自定义按键功能,点击对应按钮之后,按下所需按键即可完成设置,按键名称会显示在按钮上(重启本程序后不显示)。
33 | 4.将俯仰、滚转与油门的总行程与限位器控制进行了分离,大家可分别进行设置。
34 |
35 | 《DCS键盘辅助程序》测试版V1.0.3 @老麦0208
36 | 1.安装lua文件:将当前目录下的“Export.lua”文件复制到“C:\Users\*你的用户名*\Saved Games\*你的DCS相关文件夹*\Scripts”文件夹下,
37 | OpenBeta版用户该路径为“C:\Users\*你的用户名*\Saved Games\DCS.openbeta\Scripts”。
38 | 2.DCS清除键位:打开DCS Wold,清除想要驾驶的机型的“俯仰”、“滚转”以及“油门”按键,这是使用本辅助程序的基础。
39 | 3.程序使用方法:**注意**,在进入DCS后,点击程序界面“DCS遥控打开”按钮,即可开始使用,其他功能请参考B站对应视频。
40 | 4.其他说明:DCS遥测功能进作为展示,无实际作用,程序下一步改进可能会基于遥测数据进行自动控制相关功能开发,敬请期待。
41 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/bin/Debug/DCS_DataLink.exe.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 此代码由工具生成。
4 | // 运行时版本: 4.0.30319.42000
5 | //
6 | // 对此文件的更改可能会导致不正确的行为,并且如果
7 | // 重新生成代码,这些更改将丢失。
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DCS_DataLink.Properties
12 | {
13 |
14 |
15 | ///
16 | /// 一个强类型的资源类,用于查找本地化的字符串等。
17 | ///
18 | // 此类是由 StronglyTypedResourceBuilder
19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
21 | // (以 /str 作为命令选项),或重新生成 VS 项目。
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources
26 | {
27 |
28 | private static global::System.Resources.ResourceManager resourceMan;
29 |
30 | private static global::System.Globalization.CultureInfo resourceCulture;
31 |
32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
33 | internal Resources()
34 | {
35 | }
36 |
37 | ///
38 | /// 返回此类使用的、缓存的 ResourceManager 实例。
39 | ///
40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
41 | internal static global::System.Resources.ResourceManager ResourceManager
42 | {
43 | get
44 | {
45 | if ((resourceMan == null))
46 | {
47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DCS_DataLink.Properties.Resources", typeof(Resources).Assembly);
48 | resourceMan = temp;
49 | }
50 | return resourceMan;
51 | }
52 | }
53 |
54 | ///
55 | /// 为所有资源查找重写当前线程的 CurrentUICulture 属性,
56 | /// 方法是使用此强类型资源类。
57 | ///
58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
59 | internal static global::System.Globalization.CultureInfo Culture
60 | {
61 | get
62 | {
63 | return resourceCulture;
64 | }
65 | set
66 | {
67 | resourceCulture = value;
68 | }
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/Properties/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
47 |
54 |
55 |
69 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/obj/Debug/DCS_DataLink.csproj.FileListAbsolute.txt:
--------------------------------------------------------------------------------
1 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.exe.config
2 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.exe
3 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.pdb
4 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csprojResolveAssemblyReference.cache
5 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.Form1.resources
6 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.Properties.Resources.resources
7 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.GenerateResource.Cache
8 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.exe
9 | c:\users\damien\documents\visual studio 2013\Projects\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.pdb
10 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.exe.config
11 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.exe
12 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.pdb
13 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csprojAssemblyReference.cache
14 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.Form1.resources
15 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.Properties.Resources.resources
16 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.GenerateResource.cache
17 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.exe
18 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.pdb
19 | C:\笔记本数据备份\Projects\DCS_DataLink2\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.CoreCompileInputs.cache
20 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csprojAssemblyReference.cache
21 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.Form1.resources
22 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.Properties.Resources.resources
23 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.GenerateResource.cache
24 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.CoreCompileInputs.cache
25 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.exe
26 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\obj\Debug\DCS_DataLink.pdb
27 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.exe.config
28 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.exe
29 | C:\笔记本数据备份\Projects\DCS_DataLink_归零外挂\DCS_DataLink\DCS_DataLink\bin\Debug\DCS_DataLink.pdb
30 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.Form1.resources
31 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.Properties.Resources.resources
32 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.GenerateResource.cache
33 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.CoreCompileInputs.cache
34 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.exe
35 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.pdb
36 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\DCS_DataLink.exe.config
37 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\DCS_DataLink.exe
38 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\DCS_DataLink.pdb
39 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\Microsoft.DirectX.DirectInput.dll
40 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\Microsoft.DirectX.dll
41 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\Microsoft.DirectX.xml
42 | C:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.CopyComplete
43 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\DCS_DataLink.exe.config
44 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\DCS_DataLink.exe
45 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\DCS_DataLink.pdb
46 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\Microsoft.DirectX.DirectInput.dll
47 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\Microsoft.DirectX.dll
48 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\bin\Debug\Microsoft.DirectX.xml
49 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.Form1.resources
50 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.Properties.Resources.resources
51 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.GenerateResource.cache
52 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.CoreCompileInputs.cache
53 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.csproj.CopyComplete
54 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.exe
55 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.pdb
56 | E:\笔记本数据备份\Projects\DCS_键盘辅助\DCS_DataLink\obj\Debug\DCS_DataLink.csprojAssemblyReference.cache
57 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/DCS_DataLink.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {2590E647-DF18-4B8A-8EC6-65A153BA139B}
8 | WinExe
9 | Properties
10 | DCS_DataLink
11 | DCS_DataLink
12 | v4.5
13 | 512
14 | false
15 | C:\Users\雪\Desktop\
16 | true
17 | Disk
18 | false
19 | Foreground
20 | 7
21 | Days
22 | false
23 | false
24 | true
25 | 0
26 | 1.0.7.%2a
27 | false
28 | true
29 | true
30 |
31 |
32 | AnyCPU
33 | true
34 | full
35 | false
36 | bin\Debug\
37 | DEBUG;TRACE
38 | prompt
39 | 4
40 |
41 |
42 | AnyCPU
43 | pdbonly
44 | true
45 | bin\Release\
46 | TRACE
47 | prompt
48 | 4
49 |
50 |
51 | app图标.ico
52 |
53 |
54 | LocalIntranet
55 |
56 |
57 | false
58 |
59 |
60 | Properties\app.manifest
61 |
62 |
63 | 8AA8A445B9B18A926783F37B6528C124E8963B5F
64 |
65 |
66 | DCS_DataLink_TemporaryKey.pfx
67 |
68 |
69 | true
70 |
71 |
72 |
73 | False
74 | DLL\Microsoft.DirectX.DirectInput.dll
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 | Form
92 |
93 |
94 | Form1.cs
95 |
96 |
97 |
98 |
99 |
100 | Form1.cs
101 |
102 |
103 | ResXFileCodeGenerator
104 | Resources.Designer.cs
105 | Designer
106 |
107 |
108 | True
109 | Resources.resx
110 |
111 |
112 |
113 |
114 | SettingsSingleFileGenerator
115 | Settings.Designer.cs
116 |
117 |
118 | True
119 | Settings.settings
120 | True
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 | False
135 | .NET Framework 3.5 SP1
136 | false
137 |
138 |
139 |
140 |
147 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/KeyboardHook.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 | using System.Runtime.InteropServices;
5 | using System.Windows.Forms;
6 | using System.Reflection;
7 |
8 | namespace DCS_DataLink
9 | {
10 | ///
11 | /// 键盘钩子
12 | /// [以下代码来自某网友,并非本人原创]
13 | ///
14 | class KeyboardHook
15 | {
16 | public event KeyEventHandler KeyDownEvent;
17 | public event KeyPressEventHandler KeyPressEvent;
18 | public event KeyEventHandler KeyUpEvent;
19 |
20 | public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);
21 | static int hKeyboardHook = 0; //声明键盘钩子处理的初始值
22 | //值在Microsoft SDK的Winuser.h里查询
23 | // http://www.bianceng.cn/Programming/csharp/201410/45484.htm
24 | public const int WH_KEYBOARD_LL = 13; //线程键盘钩子监听鼠标消息设为2,全局键盘监听鼠标消息设为13
25 | HookProc KeyboardHookProcedure; //声明KeyboardHookProcedure作为HookProc类型
26 |
27 | //用于记录键状态
28 | public bool[] keyDown = new bool[256];
29 | //用于记录被按下的键
30 | static List pressedKeys = new List();
31 |
32 | ///
33 | /// 六个bool值分别对应上下左右pgup和pgdn的按压情况
34 | ///
35 | public bool[] ctrlKeyDown = new bool[6];
36 |
37 | public int[] ctrlKeySettings = new int[6];
38 |
39 | public int pressedNum = 0;
40 |
41 | //键盘结构
42 | [StructLayout(LayoutKind.Sequential)]
43 | public class KeyboardHookStruct
44 | {
45 | public int vkCode; //定一个虚拟键码。该代码必须有一个价值的范围1至254
46 | public int scanCode; // 指定的硬件扫描码的关键
47 | public int flags; // 键标志
48 | public int time; // 指定的时间戳记的这个讯息
49 | public int dwExtraInfo; // 指定额外信息相关的信息
50 | }
51 | //使用此功能,安装了一个钩子
52 | [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
53 | public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
54 |
55 |
56 | //调用此函数卸载钩子
57 | [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
58 | public static extern bool UnhookWindowsHookEx(int idHook);
59 |
60 |
61 | //使用此功能,通过信息钩子继续下一个钩子
62 | [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
63 | public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam);
64 |
65 | // 取得当前线程编号(线程钩子需要用到)
66 | [DllImport("kernel32.dll")]
67 | static extern int GetCurrentThreadId();
68 |
69 | //使用WINDOWS API函数代替获取当前实例的函数,防止钩子失效
70 | [DllImport("kernel32.dll")]
71 | public static extern IntPtr GetModuleHandle(string name);
72 |
73 |
74 |
75 | public void Start()
76 | {
77 | // 安装键盘钩子
78 | if (hKeyboardHook == 0)
79 | {
80 | KeyboardHookProcedure = new HookProc(KeyboardHookProc);
81 | hKeyboardHook = SetWindowsHookEx(13, KeyboardHookProcedure, GetModuleHandle(System.Diagnostics.Process.GetCurrentProcess().MainModule.ModuleName), 0);
82 | //hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
83 | //************************************
84 | //键盘线程钩子
85 | //SetWindowsHookEx( 2,KeyboardHookProcedure, IntPtr.Zero, GetCurrentThreadId());//指定要监听的线程idGetCurrentThreadId(),
86 | //键盘全局钩子,需要引用空间(using System.Reflection;)
87 | //SetWindowsHookEx( 13,MouseHookProcedure,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);
88 | //
89 | //关于SetWindowsHookEx (int idHook, HookProc lpfn, IntPtr hInstance, int threadId)函数将钩子加入到钩子链表中,说明一下四个参数:
90 | //idHook 钩子类型,即确定钩子监听何种消息,上面的代码中设为2,即监听键盘消息并且是线程钩子,如果是全局钩子监听键盘消息应设为13,
91 | //线程钩子监听鼠标消息设为7,全局钩子监听鼠标消息设为14。lpfn 钩子子程的地址指针。如果dwThreadId参数为0 或是一个由别的进程创建的
92 | //线程的标识,lpfn必须指向DLL中的钩子子程。 除此以外,lpfn可以指向当前进程的一段钩子子程代码。钩子函数的入口地址,当钩子钩到任何
93 | //消息后便调用这个函数。hInstance应用程序实例的句柄。标识包含lpfn所指的子程的DLL。如果threadId 标识当前进程创建的一个线程,而且子
94 | //程代码位于当前进程,hInstance必须为NULL。可以很简单的设定其为本应用程序的实例句柄。threaded 与安装的钩子子程相关联的线程的标识符
95 | //如果为0,钩子子程与所有的线程关联,即为全局钩子
96 | //************************************
97 | //如果SetWindowsHookEx失败
98 | if (hKeyboardHook == 0)
99 | {
100 | Stop();
101 | throw new Exception("安装键盘钩子失败");
102 | }
103 | }
104 | }
105 | public void Stop()
106 | {
107 | bool retKeyboard = true;
108 |
109 |
110 | if (hKeyboardHook != 0)
111 | {
112 | retKeyboard = UnhookWindowsHookEx(hKeyboardHook);
113 | hKeyboardHook = 0;
114 | }
115 |
116 | if (!(retKeyboard)) throw new Exception("卸载钩子失败!");
117 | }
118 | //ToAscii职能的转换指定的虚拟键码和键盘状态的相应字符或字符
119 | [DllImport("user32")]
120 | public static extern int ToAscii(int uVirtKey, //[in] 指定虚拟关键代码进行翻译。
121 | int uScanCode, // [in] 指定的硬件扫描码的关键须翻译成英文。高阶位的这个值设定的关键,如果是(不压)
122 | byte[] lpbKeyState, // [in] 指针,以256字节数组,包含当前键盘的状态。每个元素(字节)的数组包含状态的一个关键。如果高阶位的字节是一套,关键是下跌(按下)。在低比特,如果设置表明,关键是对切换。在此功能,只有肘位的CAPS LOCK键是相关的。在切换状态的NUM个锁和滚动锁定键被忽略。
123 | byte[] lpwTransKey, // [out] 指针的缓冲区收到翻译字符或字符。
124 | int fuState); // [in] Specifies whether a menu is active. This parameter must be 1 if a menu is active, or 0 otherwise.
125 |
126 | //获取按键的状态
127 | [DllImport("user32")]
128 | public static extern int GetKeyboardState(byte[] pbKeyState);
129 |
130 |
131 | [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
132 | private static extern short GetKeyState(int vKey);
133 |
134 | private const int WM_KEYDOWN = 0x100;//KEYDOWN
135 | private const int WM_KEYUP = 0x101;//KEYUP
136 | private const int WM_SYSKEYDOWN = 0x104;//SYSKEYDOWN
137 | private const int WM_SYSKEYUP = 0x105;//SYSKEYUP
138 |
139 | private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
140 | {
141 | //pressedKeys.Clear();
142 | // 侦听键盘事件
143 | if ((nCode >= 0) && (KeyDownEvent != null || KeyUpEvent != null || KeyPressEvent != null))
144 | {
145 | KeyboardHookStruct MyKeyboardHookStruct = (KeyboardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyboardHookStruct));
146 | // raise KeyDown
147 | if (KeyDownEvent != null && (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN))
148 | {
149 | Keys keyData = (Keys)MyKeyboardHookStruct.vkCode;
150 | KeyEventArgs e = new KeyEventArgs(keyData);
151 | //switch (e.KeyValue)
152 | //{
153 | // case (int)Keys.Up:
154 | // ctrlKeyDown[0] = true;
155 | // break;
156 | // case (int)Keys.Down:
157 | // ctrlKeyDown[1] = true;
158 | // break;
159 | // case (int)Keys.Left:
160 | // ctrlKeyDown[2] = true;
161 | // break;
162 | // case (int)Keys.Right:
163 | // ctrlKeyDown[3] = true;
164 | // break;
165 | // case (int)Keys.PageUp:
166 | // ctrlKeyDown[4] = true;
167 | // break;
168 | // case (int)Keys.PageDown:
169 | // ctrlKeyDown[5] = true;
170 | // break;
171 | //}
172 |
173 | keyDown[MyKeyboardHookStruct.vkCode] = true;
174 |
175 | KeyDownEvent(this, e);
176 | }
177 |
178 | //键盘按下
179 | if (KeyPressEvent != null && wParam == WM_KEYDOWN)
180 | {
181 | byte[] keyState = new byte[256];
182 | GetKeyboardState(keyState);
183 |
184 | byte[] inBuffer = new byte[2];
185 | if (ToAscii(MyKeyboardHookStruct.vkCode, MyKeyboardHookStruct.scanCode, keyState, inBuffer, MyKeyboardHookStruct.flags) == 1)
186 | {
187 | KeyPressEventArgs e = new KeyPressEventArgs((char)inBuffer[0]);
188 | KeyPressEvent(this, e);
189 | }
190 | }
191 |
192 | // 键盘抬起
193 | if (KeyUpEvent != null && (wParam == WM_KEYUP || wParam == WM_SYSKEYUP))
194 | {
195 | Keys keyData = (Keys)MyKeyboardHookStruct.vkCode;
196 | KeyEventArgs e = new KeyEventArgs(keyData);
197 |
198 | keyDown[MyKeyboardHookStruct.vkCode] = false;
199 |
200 | //switch (e.KeyValue)
201 | //{
202 | // case (int)Keys.Up:
203 | // ctrlKeyDown[0] = false;
204 | // break;
205 | // case (int)Keys.Down:
206 | // ctrlKeyDown[1] = false;
207 | // break;
208 | // case (int)Keys.Left:
209 | // ctrlKeyDown[2] = false;
210 | // break;
211 | // case (int)Keys.Right:
212 | // ctrlKeyDown[3] = false;
213 | // break;
214 | // case (int)Keys.PageUp:
215 | // ctrlKeyDown[4] = false;
216 | // break;
217 | // case (int)Keys.PageDown:
218 | // ctrlKeyDown[5] = false;
219 | // break;
220 | //}
221 |
222 | KeyUpEvent(this, e);
223 | }
224 |
225 |
226 | }
227 | int count = 0;
228 | for(int i = 0; i < 6; i++)
229 | {
230 | if (ctrlKeyDown[i])
231 | {
232 | count++;
233 | }
234 | }
235 |
236 | pressedNum = count;
237 | //int index = -1;
238 | //index = Array.IndexOf(keyDown, true, index + 1);
239 | //while (index != -1)
240 | //{
241 | // pressedKeys.Add((Keys)index);
242 | // index = Array.IndexOf(keyDown, true, index + 1);
243 | //};
244 |
245 | //如果返回1,则结束消息,这个消息到此为止,不再传递。
246 | //如果返回0或调用CallNextHookEx函数则消息出了这个钩子继续往下传递,也就是传给消息真正的接受者
247 | return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
248 | }
249 | ~KeyboardHook()
250 | {
251 | Stop();
252 | }
253 | }
254 | }
255 |
--------------------------------------------------------------------------------
/DCS_KA/键盘飞行辅助程序/键盘飞行辅助程序.vdproj:
--------------------------------------------------------------------------------
1 | "DeployProject"
2 | {
3 | "VSVersion" = "3:800"
4 | "ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"
5 | "IsWebType" = "8:FALSE"
6 | "ProjectName" = "8:键盘飞行辅助程序"
7 | "LanguageId" = "3:2052"
8 | "CodePage" = "3:936"
9 | "UILanguageId" = "3:2052"
10 | "SccProjectName" = "8:"
11 | "SccLocalPath" = "8:"
12 | "SccAuxPath" = "8:"
13 | "SccProvider" = "8:"
14 | "Hierarchy"
15 | {
16 | "Entry"
17 | {
18 | "MsmKey" = "8:_09DB9C29F0C3386CB38D61D4016A8959"
19 | "OwnerKey" = "8:_2F1CD7D66AFB4571B04C8ECE8FF9B862"
20 | "MsmSig" = "8:_UNDEFINED"
21 | }
22 | "Entry"
23 | {
24 | "MsmKey" = "8:_2F1CD7D66AFB4571B04C8ECE8FF9B862"
25 | "OwnerKey" = "8:_UNDEFINED"
26 | "MsmSig" = "8:_UNDEFINED"
27 | }
28 | "Entry"
29 | {
30 | "MsmKey" = "8:_9608E9251818498CBE7680E2645962E3"
31 | "OwnerKey" = "8:_UNDEFINED"
32 | "MsmSig" = "8:_UNDEFINED"
33 | }
34 | "Entry"
35 | {
36 | "MsmKey" = "8:_CBD9DC7C24E649E89CA31336D3E9B694"
37 | "OwnerKey" = "8:_UNDEFINED"
38 | "MsmSig" = "8:_UNDEFINED"
39 | }
40 | "Entry"
41 | {
42 | "MsmKey" = "8:_CC959C4258B74636A891F5D785DBCAD1"
43 | "OwnerKey" = "8:_UNDEFINED"
44 | "MsmSig" = "8:_UNDEFINED"
45 | }
46 | "Entry"
47 | {
48 | "MsmKey" = "8:_E2746BFC66DF79C4EB85ABC615B0A846"
49 | "OwnerKey" = "8:_09DB9C29F0C3386CB38D61D4016A8959"
50 | "MsmSig" = "8:_UNDEFINED"
51 | }
52 | "Entry"
53 | {
54 | "MsmKey" = "8:_F2B5030701EA454F9739431D0CC1AC43"
55 | "OwnerKey" = "8:_UNDEFINED"
56 | "MsmSig" = "8:_UNDEFINED"
57 | }
58 | "Entry"
59 | {
60 | "MsmKey" = "8:_UNDEFINED"
61 | "OwnerKey" = "8:_2F1CD7D66AFB4571B04C8ECE8FF9B862"
62 | "MsmSig" = "8:_UNDEFINED"
63 | }
64 | "Entry"
65 | {
66 | "MsmKey" = "8:_UNDEFINED"
67 | "OwnerKey" = "8:_E2746BFC66DF79C4EB85ABC615B0A846"
68 | "MsmSig" = "8:_UNDEFINED"
69 | }
70 | "Entry"
71 | {
72 | "MsmKey" = "8:_UNDEFINED"
73 | "OwnerKey" = "8:_09DB9C29F0C3386CB38D61D4016A8959"
74 | "MsmSig" = "8:_UNDEFINED"
75 | }
76 | }
77 | "Configurations"
78 | {
79 | "Debug"
80 | {
81 | "DisplayName" = "8:Debug"
82 | "IsDebugOnly" = "11:TRUE"
83 | "IsReleaseOnly" = "11:FALSE"
84 | "OutputFilename" = "8:Debug\\键盘飞行辅助程序.msi"
85 | "PackageFilesAs" = "3:2"
86 | "PackageFileSize" = "3:-2147483648"
87 | "CabType" = "3:1"
88 | "Compression" = "3:2"
89 | "SignOutput" = "11:FALSE"
90 | "CertificateFile" = "8:"
91 | "PrivateKeyFile" = "8:"
92 | "TimeStampServer" = "8:"
93 | "InstallerBootstrapper" = "3:2"
94 | "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
95 | {
96 | "Enabled" = "11:TRUE"
97 | "PromptEnabled" = "11:TRUE"
98 | "PrerequisitesLocation" = "2:1"
99 | "Url" = "8:"
100 | "ComponentsUrl" = "8:"
101 | "Items"
102 | {
103 | "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2"
104 | {
105 | "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)"
106 | "ProductCode" = "8:.NETFramework,Version=v4.7.2"
107 | }
108 | }
109 | }
110 | }
111 | "Release"
112 | {
113 | "DisplayName" = "8:Release"
114 | "IsDebugOnly" = "11:FALSE"
115 | "IsReleaseOnly" = "11:TRUE"
116 | "OutputFilename" = "8:Release\\键盘飞行辅助程序.msi"
117 | "PackageFilesAs" = "3:2"
118 | "PackageFileSize" = "3:-2147483648"
119 | "CabType" = "3:1"
120 | "Compression" = "3:2"
121 | "SignOutput" = "11:FALSE"
122 | "CertificateFile" = "8:"
123 | "PrivateKeyFile" = "8:"
124 | "TimeStampServer" = "8:"
125 | "InstallerBootstrapper" = "3:2"
126 | "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
127 | {
128 | "Enabled" = "11:TRUE"
129 | "PromptEnabled" = "11:TRUE"
130 | "PrerequisitesLocation" = "2:1"
131 | "Url" = "8:"
132 | "ComponentsUrl" = "8:"
133 | "Items"
134 | {
135 | "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2"
136 | {
137 | "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)"
138 | "ProductCode" = "8:.NETFramework,Version=v4.7.2"
139 | }
140 | }
141 | }
142 | }
143 | }
144 | "Deployable"
145 | {
146 | "CustomAction"
147 | {
148 | }
149 | "DefaultFeature"
150 | {
151 | "Name" = "8:DefaultFeature"
152 | "Title" = "8:"
153 | "Description" = "8:"
154 | }
155 | "ExternalPersistence"
156 | {
157 | "LaunchCondition"
158 | {
159 | "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_21FCADB3A25B4C4D8B9DCB1991F0DF6A"
160 | {
161 | "Name" = "8:.NET Framework"
162 | "Message" = "8:[VSDNETMSG]"
163 | "FrameworkVersion" = "8:.NETFramework,Version=v4.7.2"
164 | "AllowLaterVersions" = "11:FALSE"
165 | "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=863262"
166 | }
167 | }
168 | }
169 | "File"
170 | {
171 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_09DB9C29F0C3386CB38D61D4016A8959"
172 | {
173 | "AssemblyRegister" = "3:1"
174 | "AssemblyIsInGAC" = "11:TRUE"
175 | "AssemblyAsmDisplayName" = "8:Microsoft.DirectX.DirectInput, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
176 | "ScatterAssemblies"
177 | {
178 | "_09DB9C29F0C3386CB38D61D4016A8959"
179 | {
180 | "Name" = "8:Microsoft.DirectX.DirectInput.dll"
181 | "Attributes" = "3:512"
182 | }
183 | }
184 | "SourcePath" = "8:Microsoft.DirectX.DirectInput.dll"
185 | "TargetName" = "8:"
186 | "Tag" = "8:"
187 | "Folder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034"
188 | "Condition" = "8:"
189 | "Transitive" = "11:FALSE"
190 | "Vital" = "11:TRUE"
191 | "ReadOnly" = "11:FALSE"
192 | "Hidden" = "11:FALSE"
193 | "System" = "11:FALSE"
194 | "Permanent" = "11:FALSE"
195 | "SharedLegacy" = "11:FALSE"
196 | "PackageAs" = "3:1"
197 | "Register" = "3:1"
198 | "Exclude" = "11:FALSE"
199 | "IsDependency" = "11:TRUE"
200 | "IsolateTo" = "8:"
201 | }
202 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_2F1CD7D66AFB4571B04C8ECE8FF9B862"
203 | {
204 | "AssemblyRegister" = "3:1"
205 | "AssemblyIsInGAC" = "11:FALSE"
206 | "AssemblyAsmDisplayName" = "8:DCS_DataLink, Version=1.0.6.0, Culture=neutral, processorArchitecture=MSIL"
207 | "ScatterAssemblies"
208 | {
209 | "_2F1CD7D66AFB4571B04C8ECE8FF9B862"
210 | {
211 | "Name" = "8:DCS_DataLink.exe"
212 | "Attributes" = "3:512"
213 | }
214 | }
215 | "SourcePath" = "8:..\\DCS_DataLink\\bin\\Debug\\DCS_DataLink.exe"
216 | "TargetName" = "8:"
217 | "Tag" = "8:"
218 | "Folder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034"
219 | "Condition" = "8:"
220 | "Transitive" = "11:FALSE"
221 | "Vital" = "11:TRUE"
222 | "ReadOnly" = "11:FALSE"
223 | "Hidden" = "11:FALSE"
224 | "System" = "11:FALSE"
225 | "Permanent" = "11:FALSE"
226 | "SharedLegacy" = "11:FALSE"
227 | "PackageAs" = "3:1"
228 | "Register" = "3:1"
229 | "Exclude" = "11:FALSE"
230 | "IsDependency" = "11:FALSE"
231 | "IsolateTo" = "8:"
232 | }
233 | "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9608E9251818498CBE7680E2645962E3"
234 | {
235 | "SourcePath" = "8:..\\DCS_DataLink\\ReadMe.txt"
236 | "TargetName" = "8:ReadMe.txt"
237 | "Tag" = "8:"
238 | "Folder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034"
239 | "Condition" = "8:"
240 | "Transitive" = "11:FALSE"
241 | "Vital" = "11:TRUE"
242 | "ReadOnly" = "11:FALSE"
243 | "Hidden" = "11:FALSE"
244 | "System" = "11:FALSE"
245 | "Permanent" = "11:FALSE"
246 | "SharedLegacy" = "11:FALSE"
247 | "PackageAs" = "3:1"
248 | "Register" = "3:1"
249 | "Exclude" = "11:FALSE"
250 | "IsDependency" = "11:FALSE"
251 | "IsolateTo" = "8:"
252 | }
253 | "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CBD9DC7C24E649E89CA31336D3E9B694"
254 | {
255 | "SourcePath" = "8:..\\DCS_DataLink\\DCS-1.ico"
256 | "TargetName" = "8:DCS-1.ico"
257 | "Tag" = "8:"
258 | "Folder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034"
259 | "Condition" = "8:"
260 | "Transitive" = "11:FALSE"
261 | "Vital" = "11:TRUE"
262 | "ReadOnly" = "11:FALSE"
263 | "Hidden" = "11:FALSE"
264 | "System" = "11:FALSE"
265 | "Permanent" = "11:FALSE"
266 | "SharedLegacy" = "11:FALSE"
267 | "PackageAs" = "3:1"
268 | "Register" = "3:1"
269 | "Exclude" = "11:FALSE"
270 | "IsDependency" = "11:FALSE"
271 | "IsolateTo" = "8:"
272 | }
273 | "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CC959C4258B74636A891F5D785DBCAD1"
274 | {
275 | "SourcePath" = "8:..\\DCS_DataLink\\bin\\Debug\\DCS_DataLink.exe.config"
276 | "TargetName" = "8:DCS_DataLink.exe.config"
277 | "Tag" = "8:"
278 | "Folder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034"
279 | "Condition" = "8:"
280 | "Transitive" = "11:FALSE"
281 | "Vital" = "11:TRUE"
282 | "ReadOnly" = "11:FALSE"
283 | "Hidden" = "11:FALSE"
284 | "System" = "11:FALSE"
285 | "Permanent" = "11:FALSE"
286 | "SharedLegacy" = "11:FALSE"
287 | "PackageAs" = "3:1"
288 | "Register" = "3:1"
289 | "Exclude" = "11:FALSE"
290 | "IsDependency" = "11:FALSE"
291 | "IsolateTo" = "8:"
292 | }
293 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_E2746BFC66DF79C4EB85ABC615B0A846"
294 | {
295 | "AssemblyRegister" = "3:1"
296 | "AssemblyIsInGAC" = "11:TRUE"
297 | "AssemblyAsmDisplayName" = "8:Microsoft.DirectX, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
298 | "ScatterAssemblies"
299 | {
300 | "_E2746BFC66DF79C4EB85ABC615B0A846"
301 | {
302 | "Name" = "8:Microsoft.DirectX.dll"
303 | "Attributes" = "3:512"
304 | }
305 | }
306 | "SourcePath" = "8:Microsoft.DirectX.dll"
307 | "TargetName" = "8:"
308 | "Tag" = "8:"
309 | "Folder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034"
310 | "Condition" = "8:"
311 | "Transitive" = "11:FALSE"
312 | "Vital" = "11:TRUE"
313 | "ReadOnly" = "11:FALSE"
314 | "Hidden" = "11:FALSE"
315 | "System" = "11:FALSE"
316 | "Permanent" = "11:FALSE"
317 | "SharedLegacy" = "11:FALSE"
318 | "PackageAs" = "3:1"
319 | "Register" = "3:1"
320 | "Exclude" = "11:FALSE"
321 | "IsDependency" = "11:TRUE"
322 | "IsolateTo" = "8:"
323 | }
324 | "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F2B5030701EA454F9739431D0CC1AC43"
325 | {
326 | "SourcePath" = "8:..\\DCS_DataLink\\Export.lua"
327 | "TargetName" = "8:Export.lua"
328 | "Tag" = "8:"
329 | "Folder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034"
330 | "Condition" = "8:"
331 | "Transitive" = "11:FALSE"
332 | "Vital" = "11:TRUE"
333 | "ReadOnly" = "11:FALSE"
334 | "Hidden" = "11:FALSE"
335 | "System" = "11:FALSE"
336 | "Permanent" = "11:FALSE"
337 | "SharedLegacy" = "11:FALSE"
338 | "PackageAs" = "3:1"
339 | "Register" = "3:1"
340 | "Exclude" = "11:FALSE"
341 | "IsDependency" = "11:FALSE"
342 | "IsolateTo" = "8:"
343 | }
344 | }
345 | "FileType"
346 | {
347 | }
348 | "Folder"
349 | {
350 | "{1525181F-901A-416C-8A58-119130FE478E}:_4B89A00CE8EF4F95B24702787E004168"
351 | {
352 | "Name" = "8:#1916"
353 | "AlwaysCreate" = "11:FALSE"
354 | "Condition" = "8:"
355 | "Transitive" = "11:FALSE"
356 | "Property" = "8:DesktopFolder"
357 | "Folders"
358 | {
359 | }
360 | }
361 | "{1525181F-901A-416C-8A58-119130FE478E}:_54C4C9442B0C4B8D8F1A187399CD6722"
362 | {
363 | "Name" = "8:#1919"
364 | "AlwaysCreate" = "11:FALSE"
365 | "Condition" = "8:"
366 | "Transitive" = "11:FALSE"
367 | "Property" = "8:ProgramMenuFolder"
368 | "Folders"
369 | {
370 | }
371 | }
372 | "{3C67513D-01DD-4637-8A68-80971EB9504F}:_F5ECAF8FCF2F48DBBC8785140CD68034"
373 | {
374 | "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]"
375 | "Name" = "8:#1925"
376 | "AlwaysCreate" = "11:FALSE"
377 | "Condition" = "8:"
378 | "Transitive" = "11:FALSE"
379 | "Property" = "8:TARGETDIR"
380 | "Folders"
381 | {
382 | }
383 | }
384 | }
385 | "LaunchCondition"
386 | {
387 | }
388 | "Locator"
389 | {
390 | }
391 | "MsiBootstrapper"
392 | {
393 | "LangId" = "3:2052"
394 | "RequiresElevation" = "11:FALSE"
395 | }
396 | "Product"
397 | {
398 | "Name" = "8:Microsoft Visual Studio"
399 | "ProductName" = "8:键盘飞行辅助程序"
400 | "ProductCode" = "8:{E82ECECB-A305-43E4-8152-43D55B530C84}"
401 | "PackageCode" = "8:{8C66094B-809E-4D3C-B265-A00B2D9E8CD4}"
402 | "UpgradeCode" = "8:{55BF4B3D-DC32-48E3-8F13-6C441AD588BE}"
403 | "AspNetVersion" = "8:2.0.50727.0"
404 | "RestartWWWService" = "11:FALSE"
405 | "RemovePreviousVersions" = "11:FALSE"
406 | "DetectNewerInstalledVersion" = "11:TRUE"
407 | "InstallAllUsers" = "11:FALSE"
408 | "ProductVersion" = "8:1.0.7"
409 | "Manufacturer" = "8:Laomai0208"
410 | "ARPHELPTELEPHONE" = "8:"
411 | "ARPHELPLINK" = "8:"
412 | "Title" = "8:键盘飞行辅助程序"
413 | "Subject" = "8:"
414 | "ARPCONTACT" = "8:Laomai0208"
415 | "Keywords" = "8:"
416 | "ARPCOMMENTS" = "8:"
417 | "ARPURLINFOABOUT" = "8:"
418 | "ARPPRODUCTICON" = "8:"
419 | "ARPIconIndex" = "3:0"
420 | "SearchPath" = "8:"
421 | "UseSystemSearchPath" = "11:TRUE"
422 | "TargetPlatform" = "3:0"
423 | "PreBuildEvent" = "8:"
424 | "PostBuildEvent" = "8:"
425 | "RunPostBuildEvent" = "3:0"
426 | }
427 | "Registry"
428 | {
429 | "HKLM"
430 | {
431 | "Keys"
432 | {
433 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_71203267381246F6803705F00CB17457"
434 | {
435 | "Name" = "8:Software"
436 | "Condition" = "8:"
437 | "AlwaysCreate" = "11:FALSE"
438 | "DeleteAtUninstall" = "11:FALSE"
439 | "Transitive" = "11:FALSE"
440 | "Keys"
441 | {
442 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_C463E0E2D0734943841C2F1360D9A019"
443 | {
444 | "Name" = "8:[Manufacturer]"
445 | "Condition" = "8:"
446 | "AlwaysCreate" = "11:FALSE"
447 | "DeleteAtUninstall" = "11:FALSE"
448 | "Transitive" = "11:FALSE"
449 | "Keys"
450 | {
451 | }
452 | "Values"
453 | {
454 | }
455 | }
456 | }
457 | "Values"
458 | {
459 | }
460 | }
461 | }
462 | }
463 | "HKCU"
464 | {
465 | "Keys"
466 | {
467 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_73D1DBE0C64949CF876E29EF3E8179A4"
468 | {
469 | "Name" = "8:Software"
470 | "Condition" = "8:"
471 | "AlwaysCreate" = "11:FALSE"
472 | "DeleteAtUninstall" = "11:FALSE"
473 | "Transitive" = "11:FALSE"
474 | "Keys"
475 | {
476 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_C7E21EAEF0D547498F99F111CE925784"
477 | {
478 | "Name" = "8:[Manufacturer]"
479 | "Condition" = "8:"
480 | "AlwaysCreate" = "11:FALSE"
481 | "DeleteAtUninstall" = "11:FALSE"
482 | "Transitive" = "11:FALSE"
483 | "Keys"
484 | {
485 | }
486 | "Values"
487 | {
488 | }
489 | }
490 | }
491 | "Values"
492 | {
493 | }
494 | }
495 | }
496 | }
497 | "HKCR"
498 | {
499 | "Keys"
500 | {
501 | }
502 | }
503 | "HKU"
504 | {
505 | "Keys"
506 | {
507 | }
508 | }
509 | "HKPU"
510 | {
511 | "Keys"
512 | {
513 | }
514 | }
515 | }
516 | "Sequences"
517 | {
518 | }
519 | "Shortcut"
520 | {
521 | "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_03C86AF516924C6BBC1058E6E0912083"
522 | {
523 | "Name" = "8:DCS辅助程序"
524 | "Arguments" = "8:"
525 | "Description" = "8:"
526 | "ShowCmd" = "3:1"
527 | "IconIndex" = "3:0"
528 | "Transitive" = "11:FALSE"
529 | "Target" = "8:_2F1CD7D66AFB4571B04C8ECE8FF9B862"
530 | "Folder" = "8:_4B89A00CE8EF4F95B24702787E004168"
531 | "WorkingFolder" = "8:_F5ECAF8FCF2F48DBBC8785140CD68034"
532 | "Icon" = "8:_CBD9DC7C24E649E89CA31336D3E9B694"
533 | "Feature" = "8:"
534 | }
535 | }
536 | "UserInterface"
537 | {
538 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_26FC0D480F104C428D991B6F6A180D06"
539 | {
540 | "Name" = "8:#1901"
541 | "Sequence" = "3:2"
542 | "Attributes" = "3:2"
543 | "Dialogs"
544 | {
545 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E28C59A6E382488FA59FDB8B7B5C7EAB"
546 | {
547 | "Sequence" = "3:100"
548 | "DisplayName" = "8:进度"
549 | "UseDynamicProperties" = "11:TRUE"
550 | "IsDependency" = "11:FALSE"
551 | "SourcePath" = "8:\\VsdAdminProgressDlg.wid"
552 | "Properties"
553 | {
554 | "BannerBitmap"
555 | {
556 | "Name" = "8:BannerBitmap"
557 | "DisplayName" = "8:#1001"
558 | "Description" = "8:#1101"
559 | "Type" = "3:8"
560 | "ContextData" = "8:Bitmap"
561 | "Attributes" = "3:4"
562 | "Setting" = "3:1"
563 | "UsePlugInResources" = "11:TRUE"
564 | }
565 | "ShowProgress"
566 | {
567 | "Name" = "8:ShowProgress"
568 | "DisplayName" = "8:#1009"
569 | "Description" = "8:#1109"
570 | "Type" = "3:5"
571 | "ContextData" = "8:1;True=1;False=0"
572 | "Attributes" = "3:0"
573 | "Setting" = "3:0"
574 | "Value" = "3:1"
575 | "DefaultValue" = "3:1"
576 | "UsePlugInResources" = "11:TRUE"
577 | }
578 | }
579 | }
580 | }
581 | }
582 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_460B5F63205549CBA47067C672CADCC3"
583 | {
584 | "Name" = "8:#1901"
585 | "Sequence" = "3:1"
586 | "Attributes" = "3:2"
587 | "Dialogs"
588 | {
589 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_60F8457DE1A54940BD9DDA46E6EE0FF2"
590 | {
591 | "Sequence" = "3:100"
592 | "DisplayName" = "8:进度"
593 | "UseDynamicProperties" = "11:TRUE"
594 | "IsDependency" = "11:FALSE"
595 | "SourcePath" = "8:\\VsdProgressDlg.wid"
596 | "Properties"
597 | {
598 | "BannerBitmap"
599 | {
600 | "Name" = "8:BannerBitmap"
601 | "DisplayName" = "8:#1001"
602 | "Description" = "8:#1101"
603 | "Type" = "3:8"
604 | "ContextData" = "8:Bitmap"
605 | "Attributes" = "3:4"
606 | "Setting" = "3:1"
607 | "UsePlugInResources" = "11:TRUE"
608 | }
609 | "ShowProgress"
610 | {
611 | "Name" = "8:ShowProgress"
612 | "DisplayName" = "8:#1009"
613 | "Description" = "8:#1109"
614 | "Type" = "3:5"
615 | "ContextData" = "8:1;True=1;False=0"
616 | "Attributes" = "3:0"
617 | "Setting" = "3:0"
618 | "Value" = "3:1"
619 | "DefaultValue" = "3:1"
620 | "UsePlugInResources" = "11:TRUE"
621 | }
622 | }
623 | }
624 | }
625 | }
626 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_7ACAF647F3E749E9B8ABC2523870EE31"
627 | {
628 | "Name" = "8:#1900"
629 | "Sequence" = "3:1"
630 | "Attributes" = "3:1"
631 | "Dialogs"
632 | {
633 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_27060CD67E3E4551A877AB826DB03A48"
634 | {
635 | "Sequence" = "3:100"
636 | "DisplayName" = "8:欢迎使用"
637 | "UseDynamicProperties" = "11:TRUE"
638 | "IsDependency" = "11:FALSE"
639 | "SourcePath" = "8:\\VsdWelcomeDlg.wid"
640 | "Properties"
641 | {
642 | "BannerBitmap"
643 | {
644 | "Name" = "8:BannerBitmap"
645 | "DisplayName" = "8:#1001"
646 | "Description" = "8:#1101"
647 | "Type" = "3:8"
648 | "ContextData" = "8:Bitmap"
649 | "Attributes" = "3:4"
650 | "Setting" = "3:1"
651 | "UsePlugInResources" = "11:TRUE"
652 | }
653 | "CopyrightWarning"
654 | {
655 | "Name" = "8:CopyrightWarning"
656 | "DisplayName" = "8:#1002"
657 | "Description" = "8:#1102"
658 | "Type" = "3:3"
659 | "ContextData" = "8:"
660 | "Attributes" = "3:0"
661 | "Setting" = "3:1"
662 | "Value" = "8:#1202"
663 | "DefaultValue" = "8:#1202"
664 | "UsePlugInResources" = "11:TRUE"
665 | }
666 | "Welcome"
667 | {
668 | "Name" = "8:Welcome"
669 | "DisplayName" = "8:#1003"
670 | "Description" = "8:#1103"
671 | "Type" = "3:3"
672 | "ContextData" = "8:"
673 | "Attributes" = "3:0"
674 | "Setting" = "3:1"
675 | "Value" = "8:#1203"
676 | "DefaultValue" = "8:#1203"
677 | "UsePlugInResources" = "11:TRUE"
678 | }
679 | }
680 | }
681 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_4CE7AF88E0514252A69186CEB3C885CD"
682 | {
683 | "Sequence" = "3:300"
684 | "DisplayName" = "8:确认安装"
685 | "UseDynamicProperties" = "11:TRUE"
686 | "IsDependency" = "11:FALSE"
687 | "SourcePath" = "8:\\VsdConfirmDlg.wid"
688 | "Properties"
689 | {
690 | "BannerBitmap"
691 | {
692 | "Name" = "8:BannerBitmap"
693 | "DisplayName" = "8:#1001"
694 | "Description" = "8:#1101"
695 | "Type" = "3:8"
696 | "ContextData" = "8:Bitmap"
697 | "Attributes" = "3:4"
698 | "Setting" = "3:1"
699 | "UsePlugInResources" = "11:TRUE"
700 | }
701 | }
702 | }
703 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_AB9AADA1D22B41D19F273890979A6B84"
704 | {
705 | "Sequence" = "3:200"
706 | "DisplayName" = "8:安装文件夹"
707 | "UseDynamicProperties" = "11:TRUE"
708 | "IsDependency" = "11:FALSE"
709 | "SourcePath" = "8:\\VsdFolderDlg.wid"
710 | "Properties"
711 | {
712 | "BannerBitmap"
713 | {
714 | "Name" = "8:BannerBitmap"
715 | "DisplayName" = "8:#1001"
716 | "Description" = "8:#1101"
717 | "Type" = "3:8"
718 | "ContextData" = "8:Bitmap"
719 | "Attributes" = "3:4"
720 | "Setting" = "3:1"
721 | "UsePlugInResources" = "11:TRUE"
722 | }
723 | "InstallAllUsersVisible"
724 | {
725 | "Name" = "8:InstallAllUsersVisible"
726 | "DisplayName" = "8:#1059"
727 | "Description" = "8:#1159"
728 | "Type" = "3:5"
729 | "ContextData" = "8:1;True=1;False=0"
730 | "Attributes" = "3:0"
731 | "Setting" = "3:0"
732 | "Value" = "3:1"
733 | "DefaultValue" = "3:1"
734 | "UsePlugInResources" = "11:TRUE"
735 | }
736 | }
737 | }
738 | }
739 | }
740 | "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_8C427444168D4A278614714E19D3AB53"
741 | {
742 | "UseDynamicProperties" = "11:FALSE"
743 | "IsDependency" = "11:FALSE"
744 | "SourcePath" = "8:\\VsdBasicDialogs.wim"
745 | }
746 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_93569A22121A4217A11215A773394E2C"
747 | {
748 | "Name" = "8:#1900"
749 | "Sequence" = "3:2"
750 | "Attributes" = "3:1"
751 | "Dialogs"
752 | {
753 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_1F8E5EF5025241ABB22FBFB91E526024"
754 | {
755 | "Sequence" = "3:300"
756 | "DisplayName" = "8:确认安装"
757 | "UseDynamicProperties" = "11:TRUE"
758 | "IsDependency" = "11:FALSE"
759 | "SourcePath" = "8:\\VsdAdminConfirmDlg.wid"
760 | "Properties"
761 | {
762 | "BannerBitmap"
763 | {
764 | "Name" = "8:BannerBitmap"
765 | "DisplayName" = "8:#1001"
766 | "Description" = "8:#1101"
767 | "Type" = "3:8"
768 | "ContextData" = "8:Bitmap"
769 | "Attributes" = "3:4"
770 | "Setting" = "3:1"
771 | "UsePlugInResources" = "11:TRUE"
772 | }
773 | }
774 | }
775 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2F66EE82C6A94C20BFD3426CE3325EB7"
776 | {
777 | "Sequence" = "3:100"
778 | "DisplayName" = "8:欢迎使用"
779 | "UseDynamicProperties" = "11:TRUE"
780 | "IsDependency" = "11:FALSE"
781 | "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid"
782 | "Properties"
783 | {
784 | "BannerBitmap"
785 | {
786 | "Name" = "8:BannerBitmap"
787 | "DisplayName" = "8:#1001"
788 | "Description" = "8:#1101"
789 | "Type" = "3:8"
790 | "ContextData" = "8:Bitmap"
791 | "Attributes" = "3:4"
792 | "Setting" = "3:1"
793 | "UsePlugInResources" = "11:TRUE"
794 | }
795 | "CopyrightWarning"
796 | {
797 | "Name" = "8:CopyrightWarning"
798 | "DisplayName" = "8:#1002"
799 | "Description" = "8:#1102"
800 | "Type" = "3:3"
801 | "ContextData" = "8:"
802 | "Attributes" = "3:0"
803 | "Setting" = "3:1"
804 | "Value" = "8:#1202"
805 | "DefaultValue" = "8:#1202"
806 | "UsePlugInResources" = "11:TRUE"
807 | }
808 | "Welcome"
809 | {
810 | "Name" = "8:Welcome"
811 | "DisplayName" = "8:#1003"
812 | "Description" = "8:#1103"
813 | "Type" = "3:3"
814 | "ContextData" = "8:"
815 | "Attributes" = "3:0"
816 | "Setting" = "3:1"
817 | "Value" = "8:#1203"
818 | "DefaultValue" = "8:#1203"
819 | "UsePlugInResources" = "11:TRUE"
820 | }
821 | }
822 | }
823 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C1B2CF1EE76D49048134110BDFF173BE"
824 | {
825 | "Sequence" = "3:200"
826 | "DisplayName" = "8:安装文件夹"
827 | "UseDynamicProperties" = "11:TRUE"
828 | "IsDependency" = "11:FALSE"
829 | "SourcePath" = "8:\\VsdAdminFolderDlg.wid"
830 | "Properties"
831 | {
832 | "BannerBitmap"
833 | {
834 | "Name" = "8:BannerBitmap"
835 | "DisplayName" = "8:#1001"
836 | "Description" = "8:#1101"
837 | "Type" = "3:8"
838 | "ContextData" = "8:Bitmap"
839 | "Attributes" = "3:4"
840 | "Setting" = "3:1"
841 | "UsePlugInResources" = "11:TRUE"
842 | }
843 | }
844 | }
845 | }
846 | }
847 | "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_AB166EB6BBC547B5B5A08ECA30843551"
848 | {
849 | "UseDynamicProperties" = "11:FALSE"
850 | "IsDependency" = "11:FALSE"
851 | "SourcePath" = "8:\\VsdUserInterface.wim"
852 | }
853 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_E6D34712C732448A9EF9B211D7C076D4"
854 | {
855 | "Name" = "8:#1902"
856 | "Sequence" = "3:1"
857 | "Attributes" = "3:3"
858 | "Dialogs"
859 | {
860 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D22B48A6A36048C58C4A1093C90427D2"
861 | {
862 | "Sequence" = "3:100"
863 | "DisplayName" = "8:已完成"
864 | "UseDynamicProperties" = "11:TRUE"
865 | "IsDependency" = "11:FALSE"
866 | "SourcePath" = "8:\\VsdFinishedDlg.wid"
867 | "Properties"
868 | {
869 | "BannerBitmap"
870 | {
871 | "Name" = "8:BannerBitmap"
872 | "DisplayName" = "8:#1001"
873 | "Description" = "8:#1101"
874 | "Type" = "3:8"
875 | "ContextData" = "8:Bitmap"
876 | "Attributes" = "3:4"
877 | "Setting" = "3:1"
878 | "UsePlugInResources" = "11:TRUE"
879 | }
880 | "UpdateText"
881 | {
882 | "Name" = "8:UpdateText"
883 | "DisplayName" = "8:#1058"
884 | "Description" = "8:#1158"
885 | "Type" = "3:15"
886 | "ContextData" = "8:"
887 | "Attributes" = "3:0"
888 | "Setting" = "3:1"
889 | "Value" = "8:#1258"
890 | "DefaultValue" = "8:#1258"
891 | "UsePlugInResources" = "11:TRUE"
892 | }
893 | }
894 | }
895 | }
896 | }
897 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_E9E775F5801E4C659A9BB51B4CEFE484"
898 | {
899 | "Name" = "8:#1902"
900 | "Sequence" = "3:2"
901 | "Attributes" = "3:3"
902 | "Dialogs"
903 | {
904 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_1BF964F1F7C14BBEBB2BAE6D78AED766"
905 | {
906 | "Sequence" = "3:100"
907 | "DisplayName" = "8:已完成"
908 | "UseDynamicProperties" = "11:TRUE"
909 | "IsDependency" = "11:FALSE"
910 | "SourcePath" = "8:\\VsdAdminFinishedDlg.wid"
911 | "Properties"
912 | {
913 | "BannerBitmap"
914 | {
915 | "Name" = "8:BannerBitmap"
916 | "DisplayName" = "8:#1001"
917 | "Description" = "8:#1101"
918 | "Type" = "3:8"
919 | "ContextData" = "8:Bitmap"
920 | "Attributes" = "3:4"
921 | "Setting" = "3:1"
922 | "UsePlugInResources" = "11:TRUE"
923 | }
924 | }
925 | }
926 | }
927 | }
928 | }
929 | "MergeModule"
930 | {
931 | }
932 | "ProjectOutput"
933 | {
934 | }
935 | }
936 | }
937 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/Form1.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DCS_DataLink
2 | {
3 | partial class Form1
4 | {
5 | ///
6 | /// 必需的设计器变量。
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// 清理所有正在使用的资源。
12 | ///
13 | /// 如果应释放托管资源,为 true;否则为 false。
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows 窗体设计器生成的代码
24 |
25 | ///
26 | /// 设计器支持所需的方法 - 不要
27 | /// 使用代码编辑器修改此方法的内容。
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.components = new System.ComponentModel.Container();
32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
33 | this.button1 = new System.Windows.Forms.Button();
34 | this.button2 = new System.Windows.Forms.Button();
35 | this.textBox1 = new System.Windows.Forms.TextBox();
36 | this.label1 = new System.Windows.Forms.Label();
37 | this.label2 = new System.Windows.Forms.Label();
38 | this.pictureBox1 = new System.Windows.Forms.PictureBox();
39 | this.richTextBox1 = new System.Windows.Forms.RichTextBox();
40 | this.button5 = new System.Windows.Forms.Button();
41 | this.trackBar1 = new System.Windows.Forms.TrackBar();
42 | this.timer1 = new System.Windows.Forms.Timer(this.components);
43 | this.button6 = new System.Windows.Forms.Button();
44 | this.button7 = new System.Windows.Forms.Button();
45 | this.button8 = new System.Windows.Forms.Button();
46 | this.textBoxTrackBar = new System.Windows.Forms.TextBox();
47 | this.button4 = new System.Windows.Forms.Button();
48 | this.checkBox1 = new System.Windows.Forms.CheckBox();
49 | this.checkBox2 = new System.Windows.Forms.CheckBox();
50 | this.checkBox3 = new System.Windows.Forms.CheckBox();
51 | this.trackBarSens1 = new System.Windows.Forms.TrackBar();
52 | this.label3 = new System.Windows.Forms.Label();
53 | this.textBoxMaxTime1 = new System.Windows.Forms.TextBox();
54 | this.textBoxPitch = new System.Windows.Forms.TextBox();
55 | this.textBoxRoll = new System.Windows.Forms.TextBox();
56 | this.textBoxThrust = new System.Windows.Forms.TextBox();
57 | this.label4 = new System.Windows.Forms.Label();
58 | this.label5 = new System.Windows.Forms.Label();
59 | this.label6 = new System.Windows.Forms.Label();
60 | this.label7 = new System.Windows.Forms.Label();
61 | this.label8 = new System.Windows.Forms.Label();
62 | this.label9 = new System.Windows.Forms.Label();
63 | this.label10 = new System.Windows.Forms.Label();
64 | this.label11 = new System.Windows.Forms.Label();
65 | this.textBoxMaxCtrl1 = new System.Windows.Forms.TextBox();
66 | this.label12 = new System.Windows.Forms.Label();
67 | this.trackBarMaxCtrl1 = new System.Windows.Forms.TrackBar();
68 | this.button3 = new System.Windows.Forms.Button();
69 | this.PitchKeyPButton = new System.Windows.Forms.Button();
70 | this.RollKeyPButton = new System.Windows.Forms.Button();
71 | this.ThrustKeyPButton = new System.Windows.Forms.Button();
72 | this.ThrustKeyNButton = new System.Windows.Forms.Button();
73 | this.RollKeyNButton = new System.Windows.Forms.Button();
74 | this.PitchKeyNButton = new System.Windows.Forms.Button();
75 | this.label13 = new System.Windows.Forms.Label();
76 | this.label14 = new System.Windows.Forms.Label();
77 | this.textBoxMaxCtrl2 = new System.Windows.Forms.TextBox();
78 | this.label15 = new System.Windows.Forms.Label();
79 | this.trackBarMaxCtrl2 = new System.Windows.Forms.TrackBar();
80 | this.textBoxMaxTime2 = new System.Windows.Forms.TextBox();
81 | this.label16 = new System.Windows.Forms.Label();
82 | this.trackBarSens2 = new System.Windows.Forms.TrackBar();
83 | this.textBoxMaxCtrl3 = new System.Windows.Forms.TextBox();
84 | this.label17 = new System.Windows.Forms.Label();
85 | this.trackBarMaxCtrl3 = new System.Windows.Forms.TrackBar();
86 | this.textBoxMaxTime3 = new System.Windows.Forms.TextBox();
87 | this.label18 = new System.Windows.Forms.Label();
88 | this.trackBarSens3 = new System.Windows.Forms.TrackBar();
89 | this.label19 = new System.Windows.Forms.Label();
90 | this.button9 = new System.Windows.Forms.Button();
91 | this.textBoxJoystick = new System.Windows.Forms.TextBox();
92 | this.buttonSelectUp = new System.Windows.Forms.Button();
93 | this.buttonSelectDown = new System.Windows.Forms.Button();
94 | this.buttonSelectLeft = new System.Windows.Forms.Button();
95 | this.buttonSelectRight = new System.Windows.Forms.Button();
96 | this.button10 = new System.Windows.Forms.Button();
97 | this.textBoxSelector = new System.Windows.Forms.TextBox();
98 | this.label20 = new System.Windows.Forms.Label();
99 | this.trackBarSelector = new System.Windows.Forms.TrackBar();
100 | this.textBoxSV = new System.Windows.Forms.TextBox();
101 | this.textBoxSH = new System.Windows.Forms.TextBox();
102 | this.checkBox4 = new System.Windows.Forms.CheckBox();
103 | this.button11 = new System.Windows.Forms.Button();
104 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
105 | ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).BeginInit();
106 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSens1)).BeginInit();
107 | ((System.ComponentModel.ISupportInitialize)(this.trackBarMaxCtrl1)).BeginInit();
108 | ((System.ComponentModel.ISupportInitialize)(this.trackBarMaxCtrl2)).BeginInit();
109 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSens2)).BeginInit();
110 | ((System.ComponentModel.ISupportInitialize)(this.trackBarMaxCtrl3)).BeginInit();
111 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSens3)).BeginInit();
112 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSelector)).BeginInit();
113 | this.SuspendLayout();
114 | //
115 | // button1
116 | //
117 | this.button1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("button1.BackgroundImage")));
118 | this.button1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
119 | this.button1.Location = new System.Drawing.Point(11, 423);
120 | this.button1.Margin = new System.Windows.Forms.Padding(2);
121 | this.button1.Name = "button1";
122 | this.button1.Size = new System.Drawing.Size(120, 34);
123 | this.button1.TabIndex = 4;
124 | this.button1.Text = "DCS遥控打开";
125 | this.button1.UseVisualStyleBackColor = true;
126 | this.button1.Click += new System.EventHandler(this.button1_Click);
127 | //
128 | // button2
129 | //
130 | this.button2.Location = new System.Drawing.Point(26, 461);
131 | this.button2.Margin = new System.Windows.Forms.Padding(2);
132 | this.button2.Name = "button2";
133 | this.button2.Size = new System.Drawing.Size(90, 34);
134 | this.button2.TabIndex = 5;
135 | this.button2.Text = "DCS遥控关闭";
136 | this.button2.UseVisualStyleBackColor = true;
137 | this.button2.Click += new System.EventHandler(this.button2_Click);
138 | //
139 | // textBox1
140 | //
141 | this.textBox1.Location = new System.Drawing.Point(11, 398);
142 | this.textBox1.Margin = new System.Windows.Forms.Padding(2);
143 | this.textBox1.Name = "textBox1";
144 | this.textBox1.Size = new System.Drawing.Size(120, 21);
145 | this.textBox1.TabIndex = 6;
146 | this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
147 | //
148 | // label1
149 | //
150 | this.label1.AutoSize = true;
151 | this.label1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
152 | this.label1.Location = new System.Drawing.Point(281, 9);
153 | this.label1.Name = "label1";
154 | this.label1.Size = new System.Drawing.Size(204, 17);
155 | this.label1.TabIndex = 7;
156 | this.label1.Text = "DCS World各机型键鼠操作辅助程序";
157 | //
158 | // label2
159 | //
160 | this.label2.AutoSize = true;
161 | this.label2.Dock = System.Windows.Forms.DockStyle.Right;
162 | this.label2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
163 | this.label2.Location = new System.Drawing.Point(892, 0);
164 | this.label2.Name = "label2";
165 | this.label2.Size = new System.Drawing.Size(152, 17);
166 | this.label2.TabIndex = 8;
167 | this.label2.Text = "B站飞友特供版@老麦0208";
168 | //
169 | // pictureBox1
170 | //
171 | this.pictureBox1.BackColor = System.Drawing.SystemColors.Window;
172 | this.pictureBox1.Location = new System.Drawing.Point(560, 12);
173 | this.pictureBox1.Name = "pictureBox1";
174 | this.pictureBox1.Size = new System.Drawing.Size(200, 200);
175 | this.pictureBox1.TabIndex = 9;
176 | this.pictureBox1.TabStop = false;
177 | //
178 | // richTextBox1
179 | //
180 | this.richTextBox1.BackColor = System.Drawing.SystemColors.InactiveCaption;
181 | this.richTextBox1.Location = new System.Drawing.Point(146, 391);
182 | this.richTextBox1.Name = "richTextBox1";
183 | this.richTextBox1.Size = new System.Drawing.Size(444, 144);
184 | this.richTextBox1.TabIndex = 12;
185 | this.richTextBox1.Text = "";
186 | //
187 | // button5
188 | //
189 | this.button5.Location = new System.Drawing.Point(278, 543);
190 | this.button5.Name = "button5";
191 | this.button5.Size = new System.Drawing.Size(66, 29);
192 | this.button5.TabIndex = 13;
193 | this.button5.Text = "遥测隐藏";
194 | this.button5.UseVisualStyleBackColor = true;
195 | this.button5.Click += new System.EventHandler(this.button5_Click);
196 | //
197 | // trackBar1
198 | //
199 | this.trackBar1.Location = new System.Drawing.Point(794, 143);
200 | this.trackBar1.Maximum = 99;
201 | this.trackBar1.Minimum = 1;
202 | this.trackBar1.Name = "trackBar1";
203 | this.trackBar1.Size = new System.Drawing.Size(200, 45);
204 | this.trackBar1.TabIndex = 14;
205 | this.trackBar1.Value = 50;
206 | //
207 | // timer1
208 | //
209 | this.timer1.Interval = 10;
210 | this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
211 | //
212 | // button6
213 | //
214 | this.button6.Location = new System.Drawing.Point(440, 43);
215 | this.button6.Name = "button6";
216 | this.button6.Size = new System.Drawing.Size(80, 40);
217 | this.button6.TabIndex = 15;
218 | this.button6.Text = "俯仰步进\r\n曲线调节";
219 | this.button6.UseVisualStyleBackColor = true;
220 | this.button6.Click += new System.EventHandler(this.button6_Click_1);
221 | //
222 | // button7
223 | //
224 | this.button7.Location = new System.Drawing.Point(440, 89);
225 | this.button7.Name = "button7";
226 | this.button7.Size = new System.Drawing.Size(80, 40);
227 | this.button7.TabIndex = 16;
228 | this.button7.Text = "滚转步进\r\n曲线调节";
229 | this.button7.UseVisualStyleBackColor = true;
230 | this.button7.Click += new System.EventHandler(this.button7_Click);
231 | //
232 | // button8
233 | //
234 | this.button8.Location = new System.Drawing.Point(440, 135);
235 | this.button8.Name = "button8";
236 | this.button8.Size = new System.Drawing.Size(80, 40);
237 | this.button8.TabIndex = 17;
238 | this.button8.Text = "油门步进\r\n曲线调节";
239 | this.button8.UseVisualStyleBackColor = true;
240 | this.button8.Click += new System.EventHandler(this.button8_Click);
241 | //
242 | // textBoxTrackBar
243 | //
244 | this.textBoxTrackBar.BackColor = System.Drawing.SystemColors.Info;
245 | this.textBoxTrackBar.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
246 | this.textBoxTrackBar.ForeColor = System.Drawing.SystemColors.Highlight;
247 | this.textBoxTrackBar.Location = new System.Drawing.Point(875, 118);
248 | this.textBoxTrackBar.Name = "textBoxTrackBar";
249 | this.textBoxTrackBar.Size = new System.Drawing.Size(40, 23);
250 | this.textBoxTrackBar.TabIndex = 18;
251 | this.textBoxTrackBar.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
252 | //
253 | // button4
254 | //
255 | this.button4.Location = new System.Drawing.Point(178, 543);
256 | this.button4.Name = "button4";
257 | this.button4.Size = new System.Drawing.Size(66, 29);
258 | this.button4.TabIndex = 11;
259 | this.button4.Text = "遥测显示";
260 | this.button4.UseVisualStyleBackColor = true;
261 | this.button4.Click += new System.EventHandler(this.button4_Click);
262 | //
263 | // checkBox1
264 | //
265 | this.checkBox1.AutoSize = true;
266 | this.checkBox1.Location = new System.Drawing.Point(26, 56);
267 | this.checkBox1.Name = "checkBox1";
268 | this.checkBox1.Size = new System.Drawing.Size(96, 16);
269 | this.checkBox1.TabIndex = 19;
270 | this.checkBox1.Text = "俯仰自动回中";
271 | this.checkBox1.UseVisualStyleBackColor = true;
272 | //
273 | // checkBox2
274 | //
275 | this.checkBox2.AutoSize = true;
276 | this.checkBox2.Location = new System.Drawing.Point(26, 102);
277 | this.checkBox2.Name = "checkBox2";
278 | this.checkBox2.Size = new System.Drawing.Size(96, 16);
279 | this.checkBox2.TabIndex = 20;
280 | this.checkBox2.Text = "滚转自动回中";
281 | this.checkBox2.UseVisualStyleBackColor = true;
282 | //
283 | // checkBox3
284 | //
285 | this.checkBox3.AutoSize = true;
286 | this.checkBox3.Location = new System.Drawing.Point(26, 148);
287 | this.checkBox3.Name = "checkBox3";
288 | this.checkBox3.Size = new System.Drawing.Size(96, 16);
289 | this.checkBox3.TabIndex = 21;
290 | this.checkBox3.Text = "油门自动回中";
291 | this.checkBox3.UseVisualStyleBackColor = true;
292 | //
293 | // trackBarSens1
294 | //
295 | this.trackBarSens1.Location = new System.Drawing.Point(26, 260);
296 | this.trackBarSens1.Maximum = 100;
297 | this.trackBarSens1.Minimum = 1;
298 | this.trackBarSens1.Name = "trackBarSens1";
299 | this.trackBarSens1.Size = new System.Drawing.Size(270, 45);
300 | this.trackBarSens1.TabIndex = 22;
301 | this.trackBarSens1.Value = 1;
302 | //
303 | // label3
304 | //
305 | this.label3.AutoSize = true;
306 | this.label3.Location = new System.Drawing.Point(110, 236);
307 | this.label3.Name = "label3";
308 | this.label3.Size = new System.Drawing.Size(77, 12);
309 | this.label3.TabIndex = 23;
310 | this.label3.Text = "俯仰总行程:";
311 | //
312 | // textBoxMaxTime1
313 | //
314 | this.textBoxMaxTime1.BackColor = System.Drawing.SystemColors.Info;
315 | this.textBoxMaxTime1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
316 | this.textBoxMaxTime1.ForeColor = System.Drawing.SystemColors.Highlight;
317 | this.textBoxMaxTime1.Location = new System.Drawing.Point(212, 231);
318 | this.textBoxMaxTime1.Name = "textBoxMaxTime1";
319 | this.textBoxMaxTime1.Size = new System.Drawing.Size(40, 23);
320 | this.textBoxMaxTime1.TabIndex = 24;
321 | this.textBoxMaxTime1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
322 | //
323 | // textBoxPitch
324 | //
325 | this.textBoxPitch.BackColor = System.Drawing.SystemColors.Info;
326 | this.textBoxPitch.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
327 | this.textBoxPitch.ForeColor = System.Drawing.SystemColors.Highlight;
328 | this.textBoxPitch.Location = new System.Drawing.Point(220, 53);
329 | this.textBoxPitch.Name = "textBoxPitch";
330 | this.textBoxPitch.Size = new System.Drawing.Size(40, 23);
331 | this.textBoxPitch.TabIndex = 25;
332 | this.textBoxPitch.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
333 | //
334 | // textBoxRoll
335 | //
336 | this.textBoxRoll.BackColor = System.Drawing.SystemColors.Info;
337 | this.textBoxRoll.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
338 | this.textBoxRoll.ForeColor = System.Drawing.SystemColors.Highlight;
339 | this.textBoxRoll.Location = new System.Drawing.Point(220, 99);
340 | this.textBoxRoll.Name = "textBoxRoll";
341 | this.textBoxRoll.Size = new System.Drawing.Size(40, 23);
342 | this.textBoxRoll.TabIndex = 26;
343 | this.textBoxRoll.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
344 | //
345 | // textBoxThrust
346 | //
347 | this.textBoxThrust.BackColor = System.Drawing.SystemColors.Info;
348 | this.textBoxThrust.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
349 | this.textBoxThrust.ForeColor = System.Drawing.SystemColors.Highlight;
350 | this.textBoxThrust.Location = new System.Drawing.Point(220, 145);
351 | this.textBoxThrust.Name = "textBoxThrust";
352 | this.textBoxThrust.Size = new System.Drawing.Size(40, 23);
353 | this.textBoxThrust.TabIndex = 27;
354 | this.textBoxThrust.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
355 | //
356 | // label4
357 | //
358 | this.label4.AutoSize = true;
359 | this.label4.Location = new System.Drawing.Point(153, 57);
360 | this.label4.Name = "label4";
361 | this.label4.Size = new System.Drawing.Size(65, 12);
362 | this.label4.TabIndex = 28;
363 | this.label4.Text = "俯仰命令:";
364 | //
365 | // label5
366 | //
367 | this.label5.AutoSize = true;
368 | this.label5.Location = new System.Drawing.Point(153, 103);
369 | this.label5.Name = "label5";
370 | this.label5.Size = new System.Drawing.Size(65, 12);
371 | this.label5.TabIndex = 29;
372 | this.label5.Text = "滚转命令:";
373 | //
374 | // label6
375 | //
376 | this.label6.AutoSize = true;
377 | this.label6.Location = new System.Drawing.Point(153, 149);
378 | this.label6.Name = "label6";
379 | this.label6.Size = new System.Drawing.Size(65, 12);
380 | this.label6.TabIndex = 30;
381 | this.label6.Text = "油门命令:";
382 | //
383 | // label7
384 | //
385 | this.label7.AutoSize = true;
386 | this.label7.Location = new System.Drawing.Point(3, 199);
387 | this.label7.Name = "label7";
388 | this.label7.Size = new System.Drawing.Size(551, 12);
389 | this.label7.TabIndex = 31;
390 | this.label7.Text = "/////////////////////////////////////////////////////////////////////////////////" +
391 | "//////////";
392 | //
393 | // label8
394 | //
395 | this.label8.AutoSize = true;
396 | this.label8.Location = new System.Drawing.Point(525, 56);
397 | this.label8.Name = "label8";
398 | this.label8.Size = new System.Drawing.Size(29, 12);
399 | this.label8.TabIndex = 32;
400 | this.label8.Text = ">>>>";
401 | //
402 | // label9
403 | //
404 | this.label9.AutoSize = true;
405 | this.label9.Location = new System.Drawing.Point(525, 103);
406 | this.label9.Name = "label9";
407 | this.label9.Size = new System.Drawing.Size(29, 12);
408 | this.label9.TabIndex = 33;
409 | this.label9.Text = ">>>>";
410 | //
411 | // label10
412 | //
413 | this.label10.AutoSize = true;
414 | this.label10.Location = new System.Drawing.Point(525, 149);
415 | this.label10.Name = "label10";
416 | this.label10.Size = new System.Drawing.Size(29, 12);
417 | this.label10.TabIndex = 34;
418 | this.label10.Text = ">>>>";
419 | //
420 | // label11
421 | //
422 | this.label11.AutoSize = true;
423 | this.label11.Location = new System.Drawing.Point(3, 376);
424 | this.label11.Name = "label11";
425 | this.label11.Size = new System.Drawing.Size(1031, 12);
426 | this.label11.TabIndex = 35;
427 | this.label11.Text = "/////////////////////////////////////////////////////////////////////////////////" +
428 | "////////////////////////////////////////////////////////////////////////////////" +
429 | "//////////";
430 | //
431 | // textBoxMaxCtrl1
432 | //
433 | this.textBoxMaxCtrl1.BackColor = System.Drawing.SystemColors.Info;
434 | this.textBoxMaxCtrl1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
435 | this.textBoxMaxCtrl1.ForeColor = System.Drawing.SystemColors.Highlight;
436 | this.textBoxMaxCtrl1.Location = new System.Drawing.Point(212, 293);
437 | this.textBoxMaxCtrl1.Name = "textBoxMaxCtrl1";
438 | this.textBoxMaxCtrl1.Size = new System.Drawing.Size(40, 23);
439 | this.textBoxMaxCtrl1.TabIndex = 38;
440 | this.textBoxMaxCtrl1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
441 | //
442 | // label12
443 | //
444 | this.label12.AutoSize = true;
445 | this.label12.Location = new System.Drawing.Point(110, 298);
446 | this.label12.Name = "label12";
447 | this.label12.Size = new System.Drawing.Size(77, 12);
448 | this.label12.TabIndex = 37;
449 | this.label12.Text = "俯仰限位器:";
450 | //
451 | // trackBarMaxCtrl1
452 | //
453 | this.trackBarMaxCtrl1.Location = new System.Drawing.Point(26, 322);
454 | this.trackBarMaxCtrl1.Maximum = 100;
455 | this.trackBarMaxCtrl1.Minimum = 1;
456 | this.trackBarMaxCtrl1.Name = "trackBarMaxCtrl1";
457 | this.trackBarMaxCtrl1.Size = new System.Drawing.Size(270, 45);
458 | this.trackBarMaxCtrl1.TabIndex = 36;
459 | this.trackBarMaxCtrl1.Value = 1;
460 | //
461 | // button3
462 | //
463 | this.button3.Location = new System.Drawing.Point(863, 37);
464 | this.button3.Name = "button3";
465 | this.button3.Size = new System.Drawing.Size(67, 31);
466 | this.button3.TabIndex = 39;
467 | this.button3.Text = "切换线型";
468 | this.button3.UseVisualStyleBackColor = true;
469 | this.button3.Click += new System.EventHandler(this.button3_Click);
470 | //
471 | // PitchKeyPButton
472 | //
473 | this.PitchKeyPButton.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
474 | this.PitchKeyPButton.Location = new System.Drawing.Point(302, 48);
475 | this.PitchKeyPButton.Name = "PitchKeyPButton";
476 | this.PitchKeyPButton.Size = new System.Drawing.Size(58, 33);
477 | this.PitchKeyPButton.TabIndex = 40;
478 | this.PitchKeyPButton.Text = "俯仰+";
479 | this.PitchKeyPButton.UseVisualStyleBackColor = false;
480 | this.PitchKeyPButton.Click += new System.EventHandler(this.PitchKeyPButton_Click);
481 | //
482 | // RollKeyPButton
483 | //
484 | this.RollKeyPButton.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
485 | this.RollKeyPButton.Location = new System.Drawing.Point(302, 94);
486 | this.RollKeyPButton.Name = "RollKeyPButton";
487 | this.RollKeyPButton.Size = new System.Drawing.Size(58, 33);
488 | this.RollKeyPButton.TabIndex = 41;
489 | this.RollKeyPButton.Text = "滚转+";
490 | this.RollKeyPButton.UseVisualStyleBackColor = false;
491 | this.RollKeyPButton.Click += new System.EventHandler(this.RollKeyPButton_Click);
492 | //
493 | // ThrustKeyPButton
494 | //
495 | this.ThrustKeyPButton.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
496 | this.ThrustKeyPButton.Location = new System.Drawing.Point(302, 140);
497 | this.ThrustKeyPButton.Name = "ThrustKeyPButton";
498 | this.ThrustKeyPButton.Size = new System.Drawing.Size(58, 33);
499 | this.ThrustKeyPButton.TabIndex = 42;
500 | this.ThrustKeyPButton.Text = "油门+";
501 | this.ThrustKeyPButton.UseVisualStyleBackColor = false;
502 | this.ThrustKeyPButton.Click += new System.EventHandler(this.ThrustKeyPButton_Click);
503 | //
504 | // ThrustKeyNButton
505 | //
506 | this.ThrustKeyNButton.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
507 | this.ThrustKeyNButton.Location = new System.Drawing.Point(366, 140);
508 | this.ThrustKeyNButton.Name = "ThrustKeyNButton";
509 | this.ThrustKeyNButton.Size = new System.Drawing.Size(58, 33);
510 | this.ThrustKeyNButton.TabIndex = 45;
511 | this.ThrustKeyNButton.Text = "油门-";
512 | this.ThrustKeyNButton.UseVisualStyleBackColor = false;
513 | this.ThrustKeyNButton.Click += new System.EventHandler(this.ThrustKeyNButton_Click);
514 | //
515 | // RollKeyNButton
516 | //
517 | this.RollKeyNButton.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
518 | this.RollKeyNButton.Location = new System.Drawing.Point(366, 94);
519 | this.RollKeyNButton.Name = "RollKeyNButton";
520 | this.RollKeyNButton.Size = new System.Drawing.Size(58, 33);
521 | this.RollKeyNButton.TabIndex = 44;
522 | this.RollKeyNButton.Text = "滚转-";
523 | this.RollKeyNButton.UseVisualStyleBackColor = false;
524 | this.RollKeyNButton.Click += new System.EventHandler(this.RollKeyNButton_Click);
525 | //
526 | // PitchKeyNButton
527 | //
528 | this.PitchKeyNButton.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
529 | this.PitchKeyNButton.Location = new System.Drawing.Point(366, 48);
530 | this.PitchKeyNButton.Name = "PitchKeyNButton";
531 | this.PitchKeyNButton.Size = new System.Drawing.Size(58, 33);
532 | this.PitchKeyNButton.TabIndex = 43;
533 | this.PitchKeyNButton.Text = "俯仰-";
534 | this.PitchKeyNButton.UseVisualStyleBackColor = false;
535 | this.PitchKeyNButton.Click += new System.EventHandler(this.PitchKeyNButton_Click);
536 | //
537 | // label13
538 | //
539 | this.label13.AutoSize = true;
540 | this.label13.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
541 | this.label13.Location = new System.Drawing.Point(326, 29);
542 | this.label13.Name = "label13";
543 | this.label13.Size = new System.Drawing.Size(16, 16);
544 | this.label13.TabIndex = 46;
545 | this.label13.Text = "+";
546 | //
547 | // label14
548 | //
549 | this.label14.AutoSize = true;
550 | this.label14.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
551 | this.label14.Location = new System.Drawing.Point(389, 29);
552 | this.label14.Name = "label14";
553 | this.label14.Size = new System.Drawing.Size(16, 16);
554 | this.label14.TabIndex = 47;
555 | this.label14.Text = "-";
556 | //
557 | // textBoxMaxCtrl2
558 | //
559 | this.textBoxMaxCtrl2.BackColor = System.Drawing.SystemColors.Info;
560 | this.textBoxMaxCtrl2.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
561 | this.textBoxMaxCtrl2.ForeColor = System.Drawing.SystemColors.Highlight;
562 | this.textBoxMaxCtrl2.Location = new System.Drawing.Point(532, 293);
563 | this.textBoxMaxCtrl2.Name = "textBoxMaxCtrl2";
564 | this.textBoxMaxCtrl2.Size = new System.Drawing.Size(40, 23);
565 | this.textBoxMaxCtrl2.TabIndex = 53;
566 | this.textBoxMaxCtrl2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
567 | //
568 | // label15
569 | //
570 | this.label15.AutoSize = true;
571 | this.label15.Location = new System.Drawing.Point(422, 298);
572 | this.label15.Name = "label15";
573 | this.label15.Size = new System.Drawing.Size(77, 12);
574 | this.label15.TabIndex = 52;
575 | this.label15.Text = "滚转限位器:";
576 | //
577 | // trackBarMaxCtrl2
578 | //
579 | this.trackBarMaxCtrl2.Location = new System.Drawing.Point(346, 322);
580 | this.trackBarMaxCtrl2.Maximum = 100;
581 | this.trackBarMaxCtrl2.Minimum = 1;
582 | this.trackBarMaxCtrl2.Name = "trackBarMaxCtrl2";
583 | this.trackBarMaxCtrl2.Size = new System.Drawing.Size(270, 45);
584 | this.trackBarMaxCtrl2.TabIndex = 51;
585 | this.trackBarMaxCtrl2.Value = 1;
586 | //
587 | // textBoxMaxTime2
588 | //
589 | this.textBoxMaxTime2.BackColor = System.Drawing.SystemColors.Info;
590 | this.textBoxMaxTime2.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
591 | this.textBoxMaxTime2.ForeColor = System.Drawing.SystemColors.Highlight;
592 | this.textBoxMaxTime2.Location = new System.Drawing.Point(532, 231);
593 | this.textBoxMaxTime2.Name = "textBoxMaxTime2";
594 | this.textBoxMaxTime2.Size = new System.Drawing.Size(40, 23);
595 | this.textBoxMaxTime2.TabIndex = 50;
596 | this.textBoxMaxTime2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
597 | //
598 | // label16
599 | //
600 | this.label16.AutoSize = true;
601 | this.label16.Location = new System.Drawing.Point(422, 236);
602 | this.label16.Name = "label16";
603 | this.label16.Size = new System.Drawing.Size(77, 12);
604 | this.label16.TabIndex = 49;
605 | this.label16.Text = "滚转总行程:";
606 | //
607 | // trackBarSens2
608 | //
609 | this.trackBarSens2.Location = new System.Drawing.Point(346, 260);
610 | this.trackBarSens2.Maximum = 100;
611 | this.trackBarSens2.Minimum = 1;
612 | this.trackBarSens2.Name = "trackBarSens2";
613 | this.trackBarSens2.Size = new System.Drawing.Size(270, 45);
614 | this.trackBarSens2.TabIndex = 48;
615 | this.trackBarSens2.Value = 1;
616 | //
617 | // textBoxMaxCtrl3
618 | //
619 | this.textBoxMaxCtrl3.BackColor = System.Drawing.SystemColors.Info;
620 | this.textBoxMaxCtrl3.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
621 | this.textBoxMaxCtrl3.ForeColor = System.Drawing.SystemColors.Highlight;
622 | this.textBoxMaxCtrl3.Location = new System.Drawing.Point(863, 293);
623 | this.textBoxMaxCtrl3.Name = "textBoxMaxCtrl3";
624 | this.textBoxMaxCtrl3.Size = new System.Drawing.Size(40, 23);
625 | this.textBoxMaxCtrl3.TabIndex = 59;
626 | this.textBoxMaxCtrl3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
627 | //
628 | // label17
629 | //
630 | this.label17.AutoSize = true;
631 | this.label17.Location = new System.Drawing.Point(763, 298);
632 | this.label17.Name = "label17";
633 | this.label17.Size = new System.Drawing.Size(77, 12);
634 | this.label17.TabIndex = 58;
635 | this.label17.Text = "油门限位器:";
636 | //
637 | // trackBarMaxCtrl3
638 | //
639 | this.trackBarMaxCtrl3.Location = new System.Drawing.Point(677, 322);
640 | this.trackBarMaxCtrl3.Maximum = 100;
641 | this.trackBarMaxCtrl3.Minimum = 1;
642 | this.trackBarMaxCtrl3.Name = "trackBarMaxCtrl3";
643 | this.trackBarMaxCtrl3.Size = new System.Drawing.Size(270, 45);
644 | this.trackBarMaxCtrl3.TabIndex = 57;
645 | this.trackBarMaxCtrl3.Value = 1;
646 | //
647 | // textBoxMaxTime3
648 | //
649 | this.textBoxMaxTime3.BackColor = System.Drawing.SystemColors.Info;
650 | this.textBoxMaxTime3.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
651 | this.textBoxMaxTime3.ForeColor = System.Drawing.SystemColors.Highlight;
652 | this.textBoxMaxTime3.Location = new System.Drawing.Point(863, 231);
653 | this.textBoxMaxTime3.Name = "textBoxMaxTime3";
654 | this.textBoxMaxTime3.Size = new System.Drawing.Size(40, 23);
655 | this.textBoxMaxTime3.TabIndex = 56;
656 | this.textBoxMaxTime3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
657 | //
658 | // label18
659 | //
660 | this.label18.AutoSize = true;
661 | this.label18.Location = new System.Drawing.Point(763, 236);
662 | this.label18.Name = "label18";
663 | this.label18.Size = new System.Drawing.Size(77, 12);
664 | this.label18.TabIndex = 55;
665 | this.label18.Text = "油门总行程:";
666 | //
667 | // trackBarSens3
668 | //
669 | this.trackBarSens3.Location = new System.Drawing.Point(677, 260);
670 | this.trackBarSens3.Maximum = 100;
671 | this.trackBarSens3.Minimum = 1;
672 | this.trackBarSens3.Name = "trackBarSens3";
673 | this.trackBarSens3.Size = new System.Drawing.Size(270, 45);
674 | this.trackBarSens3.TabIndex = 54;
675 | this.trackBarSens3.Value = 1;
676 | //
677 | // label19
678 | //
679 | this.label19.AutoSize = true;
680 | this.label19.Location = new System.Drawing.Point(858, 176);
681 | this.label19.Name = "label19";
682 | this.label19.Size = new System.Drawing.Size(77, 12);
683 | this.label19.TabIndex = 60;
684 | this.label19.Text = "步进曲线调节";
685 | //
686 | // button9
687 | //
688 | this.button9.Location = new System.Drawing.Point(680, 439);
689 | this.button9.Name = "button9";
690 | this.button9.Size = new System.Drawing.Size(77, 36);
691 | this.button9.TabIndex = 61;
692 | this.button9.Text = "连接摇杆";
693 | this.button9.UseVisualStyleBackColor = true;
694 | this.button9.Click += new System.EventHandler(this.button9_Click);
695 | //
696 | // textBoxJoystick
697 | //
698 | this.textBoxJoystick.Location = new System.Drawing.Point(658, 398);
699 | this.textBoxJoystick.Name = "textBoxJoystick";
700 | this.textBoxJoystick.Size = new System.Drawing.Size(120, 21);
701 | this.textBoxJoystick.TabIndex = 62;
702 | //
703 | // buttonSelectUp
704 | //
705 | this.buttonSelectUp.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
706 | this.buttonSelectUp.Location = new System.Drawing.Point(861, 412);
707 | this.buttonSelectUp.Name = "buttonSelectUp";
708 | this.buttonSelectUp.Size = new System.Drawing.Size(73, 29);
709 | this.buttonSelectUp.TabIndex = 63;
710 | this.buttonSelectUp.Text = "上";
711 | this.buttonSelectUp.UseVisualStyleBackColor = false;
712 | this.buttonSelectUp.Click += new System.EventHandler(this.buttonSelectUp_Click);
713 | //
714 | // buttonSelectDown
715 | //
716 | this.buttonSelectDown.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
717 | this.buttonSelectDown.Location = new System.Drawing.Point(861, 482);
718 | this.buttonSelectDown.Name = "buttonSelectDown";
719 | this.buttonSelectDown.Size = new System.Drawing.Size(73, 29);
720 | this.buttonSelectDown.TabIndex = 64;
721 | this.buttonSelectDown.Text = "下";
722 | this.buttonSelectDown.UseVisualStyleBackColor = false;
723 | this.buttonSelectDown.Click += new System.EventHandler(this.buttonSelectDown_Click);
724 | //
725 | // buttonSelectLeft
726 | //
727 | this.buttonSelectLeft.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
728 | this.buttonSelectLeft.Location = new System.Drawing.Point(816, 449);
729 | this.buttonSelectLeft.Name = "buttonSelectLeft";
730 | this.buttonSelectLeft.Size = new System.Drawing.Size(72, 29);
731 | this.buttonSelectLeft.TabIndex = 65;
732 | this.buttonSelectLeft.Text = "左";
733 | this.buttonSelectLeft.UseVisualStyleBackColor = false;
734 | this.buttonSelectLeft.Click += new System.EventHandler(this.buttonSelectLeft_Click);
735 | //
736 | // buttonSelectRight
737 | //
738 | this.buttonSelectRight.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
739 | this.buttonSelectRight.Location = new System.Drawing.Point(906, 449);
740 | this.buttonSelectRight.Name = "buttonSelectRight";
741 | this.buttonSelectRight.Size = new System.Drawing.Size(72, 29);
742 | this.buttonSelectRight.TabIndex = 66;
743 | this.buttonSelectRight.Text = "右";
744 | this.buttonSelectRight.UseVisualStyleBackColor = false;
745 | this.buttonSelectRight.Click += new System.EventHandler(this.buttonSelectRight_Click);
746 | //
747 | // button10
748 | //
749 | this.button10.Location = new System.Drawing.Point(680, 482);
750 | this.button10.Name = "button10";
751 | this.button10.Size = new System.Drawing.Size(77, 36);
752 | this.button10.TabIndex = 67;
753 | this.button10.Text = "断开摇杆";
754 | this.button10.UseVisualStyleBackColor = true;
755 | this.button10.Click += new System.EventHandler(this.button10_Click);
756 | //
757 | // textBoxSelector
758 | //
759 | this.textBoxSelector.BackColor = System.Drawing.SystemColors.Info;
760 | this.textBoxSelector.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
761 | this.textBoxSelector.ForeColor = System.Drawing.SystemColors.Highlight;
762 | this.textBoxSelector.Location = new System.Drawing.Point(935, 525);
763 | this.textBoxSelector.Name = "textBoxSelector";
764 | this.textBoxSelector.Size = new System.Drawing.Size(40, 23);
765 | this.textBoxSelector.TabIndex = 70;
766 | this.textBoxSelector.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
767 | //
768 | // label20
769 | //
770 | this.label20.AutoSize = true;
771 | this.label20.Location = new System.Drawing.Point(852, 530);
772 | this.label20.Name = "label20";
773 | this.label20.Size = new System.Drawing.Size(77, 12);
774 | this.label20.TabIndex = 69;
775 | this.label20.Text = "游标总行程:";
776 | //
777 | // trackBarSelector
778 | //
779 | this.trackBarSelector.Location = new System.Drawing.Point(775, 550);
780 | this.trackBarSelector.Maximum = 100;
781 | this.trackBarSelector.Minimum = 1;
782 | this.trackBarSelector.Name = "trackBarSelector";
783 | this.trackBarSelector.Size = new System.Drawing.Size(270, 45);
784 | this.trackBarSelector.TabIndex = 68;
785 | this.trackBarSelector.Value = 1;
786 | //
787 | // textBoxSV
788 | //
789 | this.textBoxSV.Location = new System.Drawing.Point(861, 391);
790 | this.textBoxSV.Name = "textBoxSV";
791 | this.textBoxSV.Size = new System.Drawing.Size(73, 21);
792 | this.textBoxSV.TabIndex = 71;
793 | //
794 | // textBoxSH
795 | //
796 | this.textBoxSH.Location = new System.Drawing.Point(984, 454);
797 | this.textBoxSH.Name = "textBoxSH";
798 | this.textBoxSH.Size = new System.Drawing.Size(58, 21);
799 | this.textBoxSH.TabIndex = 72;
800 | //
801 | // checkBox4
802 | //
803 | this.checkBox4.AutoSize = true;
804 | this.checkBox4.Location = new System.Drawing.Point(673, 550);
805 | this.checkBox4.Name = "checkBox4";
806 | this.checkBox4.Size = new System.Drawing.Size(96, 16);
807 | this.checkBox4.TabIndex = 73;
808 | this.checkBox4.Text = "游标自动回中";
809 | this.checkBox4.UseVisualStyleBackColor = true;
810 | //
811 | // button11
812 | //
813 | this.button11.Location = new System.Drawing.Point(418, 541);
814 | this.button11.Name = "button11";
815 | this.button11.Size = new System.Drawing.Size(81, 31);
816 | this.button11.TabIndex = 74;
817 | this.button11.Text = "打开AAR辅助";
818 | this.button11.UseVisualStyleBackColor = true;
819 | this.button11.Click += new System.EventHandler(this.button11_Click);
820 | //
821 | // Form1
822 | //
823 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
824 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
825 | this.AutoSize = true;
826 | this.BackColor = System.Drawing.SystemColors.ActiveCaption;
827 | this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
828 | this.ClientSize = new System.Drawing.Size(1044, 577);
829 | this.Controls.Add(this.button11);
830 | this.Controls.Add(this.checkBox4);
831 | this.Controls.Add(this.textBoxSH);
832 | this.Controls.Add(this.textBoxSV);
833 | this.Controls.Add(this.textBoxSelector);
834 | this.Controls.Add(this.label20);
835 | this.Controls.Add(this.trackBarSelector);
836 | this.Controls.Add(this.button10);
837 | this.Controls.Add(this.buttonSelectRight);
838 | this.Controls.Add(this.buttonSelectLeft);
839 | this.Controls.Add(this.buttonSelectDown);
840 | this.Controls.Add(this.buttonSelectUp);
841 | this.Controls.Add(this.textBoxJoystick);
842 | this.Controls.Add(this.button9);
843 | this.Controls.Add(this.label19);
844 | this.Controls.Add(this.textBoxMaxCtrl3);
845 | this.Controls.Add(this.label17);
846 | this.Controls.Add(this.trackBarMaxCtrl3);
847 | this.Controls.Add(this.textBoxMaxTime3);
848 | this.Controls.Add(this.label18);
849 | this.Controls.Add(this.trackBarSens3);
850 | this.Controls.Add(this.textBoxMaxCtrl2);
851 | this.Controls.Add(this.label15);
852 | this.Controls.Add(this.trackBarMaxCtrl2);
853 | this.Controls.Add(this.textBoxMaxTime2);
854 | this.Controls.Add(this.label16);
855 | this.Controls.Add(this.trackBarSens2);
856 | this.Controls.Add(this.label14);
857 | this.Controls.Add(this.label13);
858 | this.Controls.Add(this.ThrustKeyNButton);
859 | this.Controls.Add(this.RollKeyNButton);
860 | this.Controls.Add(this.PitchKeyNButton);
861 | this.Controls.Add(this.ThrustKeyPButton);
862 | this.Controls.Add(this.RollKeyPButton);
863 | this.Controls.Add(this.PitchKeyPButton);
864 | this.Controls.Add(this.button3);
865 | this.Controls.Add(this.textBoxMaxCtrl1);
866 | this.Controls.Add(this.label12);
867 | this.Controls.Add(this.trackBarMaxCtrl1);
868 | this.Controls.Add(this.label11);
869 | this.Controls.Add(this.label10);
870 | this.Controls.Add(this.label9);
871 | this.Controls.Add(this.label8);
872 | this.Controls.Add(this.label7);
873 | this.Controls.Add(this.label6);
874 | this.Controls.Add(this.label5);
875 | this.Controls.Add(this.label4);
876 | this.Controls.Add(this.textBoxThrust);
877 | this.Controls.Add(this.textBoxRoll);
878 | this.Controls.Add(this.textBoxPitch);
879 | this.Controls.Add(this.textBoxMaxTime1);
880 | this.Controls.Add(this.label3);
881 | this.Controls.Add(this.trackBarSens1);
882 | this.Controls.Add(this.checkBox3);
883 | this.Controls.Add(this.checkBox2);
884 | this.Controls.Add(this.checkBox1);
885 | this.Controls.Add(this.textBoxTrackBar);
886 | this.Controls.Add(this.button8);
887 | this.Controls.Add(this.button7);
888 | this.Controls.Add(this.button6);
889 | this.Controls.Add(this.trackBar1);
890 | this.Controls.Add(this.button5);
891 | this.Controls.Add(this.richTextBox1);
892 | this.Controls.Add(this.button4);
893 | this.Controls.Add(this.pictureBox1);
894 | this.Controls.Add(this.label2);
895 | this.Controls.Add(this.label1);
896 | this.Controls.Add(this.textBox1);
897 | this.Controls.Add(this.button2);
898 | this.Controls.Add(this.button1);
899 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
900 | this.Margin = new System.Windows.Forms.Padding(2);
901 | this.Name = "Form1";
902 | this.Text = "键盘飞行辅助程序V1.0.7beta";
903 | this.Load += new System.EventHandler(this.Form1_Load);
904 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
905 | ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).EndInit();
906 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSens1)).EndInit();
907 | ((System.ComponentModel.ISupportInitialize)(this.trackBarMaxCtrl1)).EndInit();
908 | ((System.ComponentModel.ISupportInitialize)(this.trackBarMaxCtrl2)).EndInit();
909 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSens2)).EndInit();
910 | ((System.ComponentModel.ISupportInitialize)(this.trackBarMaxCtrl3)).EndInit();
911 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSens3)).EndInit();
912 | ((System.ComponentModel.ISupportInitialize)(this.trackBarSelector)).EndInit();
913 | this.ResumeLayout(false);
914 | this.PerformLayout();
915 |
916 | }
917 |
918 | #endregion
919 | private System.Windows.Forms.Button button1;
920 | private System.Windows.Forms.Button button2;
921 | private System.Windows.Forms.TextBox textBox1;
922 | private System.Windows.Forms.Label label1;
923 | private System.Windows.Forms.Label label2;
924 | private System.Windows.Forms.PictureBox pictureBox1;
925 | private System.Windows.Forms.RichTextBox richTextBox1;
926 | private System.Windows.Forms.Button button5;
927 | private System.Windows.Forms.TrackBar trackBar1;
928 | private System.Windows.Forms.Timer timer1;
929 | private System.Windows.Forms.Button button6;
930 | private System.Windows.Forms.Button button7;
931 | private System.Windows.Forms.Button button8;
932 | private System.Windows.Forms.TextBox textBoxTrackBar;
933 | private System.Windows.Forms.Button button4;
934 | private System.Windows.Forms.CheckBox checkBox1;
935 | private System.Windows.Forms.CheckBox checkBox2;
936 | private System.Windows.Forms.CheckBox checkBox3;
937 | private System.Windows.Forms.TrackBar trackBarSens1;
938 | private System.Windows.Forms.Label label3;
939 | private System.Windows.Forms.TextBox textBoxMaxTime1;
940 | private System.Windows.Forms.TextBox textBoxPitch;
941 | private System.Windows.Forms.TextBox textBoxRoll;
942 | private System.Windows.Forms.TextBox textBoxThrust;
943 | private System.Windows.Forms.Label label4;
944 | private System.Windows.Forms.Label label5;
945 | private System.Windows.Forms.Label label6;
946 | private System.Windows.Forms.Label label7;
947 | private System.Windows.Forms.Label label8;
948 | private System.Windows.Forms.Label label9;
949 | private System.Windows.Forms.Label label10;
950 | private System.Windows.Forms.Label label11;
951 | private System.Windows.Forms.TextBox textBoxMaxCtrl1;
952 | private System.Windows.Forms.Label label12;
953 | private System.Windows.Forms.TrackBar trackBarMaxCtrl1;
954 | private System.Windows.Forms.Button button3;
955 | private System.Windows.Forms.Button PitchKeyPButton;
956 | private System.Windows.Forms.Button RollKeyPButton;
957 | private System.Windows.Forms.Button ThrustKeyPButton;
958 | private System.Windows.Forms.Button ThrustKeyNButton;
959 | private System.Windows.Forms.Button RollKeyNButton;
960 | private System.Windows.Forms.Button PitchKeyNButton;
961 | private System.Windows.Forms.Label label13;
962 | private System.Windows.Forms.Label label14;
963 | private System.Windows.Forms.TextBox textBoxMaxCtrl2;
964 | private System.Windows.Forms.Label label15;
965 | private System.Windows.Forms.TrackBar trackBarMaxCtrl2;
966 | private System.Windows.Forms.TextBox textBoxMaxTime2;
967 | private System.Windows.Forms.Label label16;
968 | private System.Windows.Forms.TrackBar trackBarSens2;
969 | private System.Windows.Forms.TextBox textBoxMaxCtrl3;
970 | private System.Windows.Forms.Label label17;
971 | private System.Windows.Forms.TrackBar trackBarMaxCtrl3;
972 | private System.Windows.Forms.TextBox textBoxMaxTime3;
973 | private System.Windows.Forms.Label label18;
974 | private System.Windows.Forms.TrackBar trackBarSens3;
975 | private System.Windows.Forms.Label label19;
976 | private System.Windows.Forms.Button button9;
977 | private System.Windows.Forms.TextBox textBoxJoystick;
978 | private System.Windows.Forms.Button buttonSelectUp;
979 | private System.Windows.Forms.Button buttonSelectDown;
980 | private System.Windows.Forms.Button buttonSelectLeft;
981 | private System.Windows.Forms.Button buttonSelectRight;
982 | private System.Windows.Forms.Button button10;
983 | private System.Windows.Forms.TextBox textBoxSelector;
984 | private System.Windows.Forms.Label label20;
985 | private System.Windows.Forms.TrackBar trackBarSelector;
986 | private System.Windows.Forms.TextBox textBoxSV;
987 | private System.Windows.Forms.TextBox textBoxSH;
988 | private System.Windows.Forms.CheckBox checkBox4;
989 | private System.Windows.Forms.Button button11;
990 | }
991 | }
992 |
993 |
--------------------------------------------------------------------------------
/DCS_KA/DCS_DataLink/Export.lua:
--------------------------------------------------------------------------------
1 | --- DO NOT EDIT.
2 | --- This file is for reference purposes only
3 | --- All user modifications should go to $HOME\Saved Games\DCS\Scripts\Export.lua
4 |
5 | -- Data export script for DCS, version 1.2.
6 | -- Copyright (C) 2006-2014, Eagle Dynamics.
7 | -- See http://www.lua.org for Lua script system info
8 | -- We recommend to use the LuaSocket addon (http://www.tecgraf.puc-rio.br/luasocket)
9 | -- to use standard network protocols in Lua scripts.
10 | -- LuaSocket 2.0 files (*.dll and *.lua) are supplied in the Scripts/LuaSocket folder
11 | -- and in the installation folder of the DCS.
12 |
13 | -- Expand the functionality of following functions for your external application needs.
14 | -- Look into Saved Games\DCS\Logs\dcs.log for this script errors, please.
15 |
16 | -- copyright @ DamienLIU 20200730
17 | -- version 1.0.1
18 |
19 | --[[
20 | -- Uncomment if using Vector class from the Scripts\Vector.lua file
21 | local lfs = require('lfs')
22 | LUA_PATH = "?;?.lua;"..lfs.currentdir().."/Scripts/?.lua"
23 | require 'Vector'
24 | -- See the Scripts\Vector.lua file for Vector class details, please.
25 | --]]
26 |
27 | local default_output_file = nil
28 |
29 | function LuaExportStart()
30 | -- Works once just before mission start.
31 | -- Make initializations of your files or connections here.
32 | -- For example:
33 | -- 1) File
34 |
35 | -- default_output_file = io.open("D:/Export.log", "w")
36 | -- default_output_file:write("test\n")
37 |
38 | -- 2) Socket
39 | package.path = package.path..";"..lfs.currentdir().."/LuaSocket/?.lua"
40 | package.cpath = package.cpath..";"..lfs.currentdir().."/LuaSocket/?.dll"
41 | socket = require("socket")
42 | host = "127.0.0.1"
43 | port1 = 12345
44 | port2 = 12344
45 |
46 | socket = require("socket")
47 |
48 | -- send
49 | c = socket.udp()
50 | c:setpeername(host, port1)
51 | c:settimeout(.01) -- set the timeout for reading the socket
52 |
53 | -- receive
54 | d = socket.udp()
55 | d:setsockname('*', port2)
56 | d:settimeout(0) -- set the timeout for reading the socket
57 |
58 | end
59 |
60 | function LuaExportBeforeNextFrame()
61 | ProcessInput()
62 | -- LoSetCommand(3, 0.25)
63 | -- LoSetCommand(64,1)
64 | -- Call Lo*() functions to set data to Lock On here
65 | -- For example:
66 | -- LoSetCommand(3, 0.25) -- rudder 0.25 right
67 | -- LoSetCommand(64) -- increase thrust
68 |
69 |
70 | end
71 |
72 | function LuaExportAfterNextFrame()
73 | -- Works just after every simulation frame.
74 |
75 | -- Call Lo*() functions to get data from Lock On here.
76 | -- For example:
77 |
78 | local t = LoGetModelTime()
79 | local name = LoGetPilotName()
80 | local altBar = LoGetAltitudeAboveSeaLevel()
81 | local altRad = LoGetAltitudeAboveGroundLevel()
82 | local pitch, bank, yaw = LoGetADIPitchBankYaw()
83 | local engine = LoGetEngineInfo()
84 | local HSI = LoGetControlPanel_HSI()
85 | local IAS = LoGetIndicatedAirSpeed()
86 | local ID = LoGetPlayerPlaneId()
87 | local o = LoGetObjectById(ID)
88 | local Lat = o.LatLongAlt.Lat
89 | local Long = o.LatLongAlt.Long
90 | local Alt = o.LatLongAlt.Alt
91 | local x = o.Position.x
92 | local y = o.Position.y
93 | local z = o.Position.z
94 | local tas = LoGetTrueAirSpeed()
95 | local mssage = ""
96 | local obj = LoGetWorldObjects()
97 |
98 | if x==nil then
99 | x=0
100 | end
101 |
102 | if y==nil then
103 | y=0
104 | end
105 | if z==nil then
106 | z=0
107 | end
108 |
109 | -- for k,v in pairs(o) do
110 | -- p=string.format("%s",v.Country)
111 | -- end
112 |
113 | p = o.Type.level4
114 |
115 | if p==nil then
116 | p = "bug"
117 | end
118 |
119 | --msg = string.format("t=%.2f, IAS = %.2f, ID=%.0f, Long=%.4f, x=%.2f, y=%.2f, z=%.2f, planeName:%s",t,IAS,ID,Long,x,y,z,p)
120 |
121 |
122 | for k,v in pairs(obj) do
123 | --socket.try(c:send(string.format("t = %.2f, ID = %d, name = %s, country = %s(%s), LatLongAlt = (%f, %f, %f), heading = %f\n", t, k, v.Name, v.Country, v.Coalition, v.LatLongAlt.x, v.LatLongAlt.Long, v.LatLongAlt.Alt, v.Heading)))
124 | p1 = v.Type.level4
125 | if p1==nil then
126 | p1 = "bug"
127 | end
128 |
129 | p2 = v.Name
130 | if p2 ==nil then
131 | p2 = "NilName"
132 | end
133 |
134 | p3 = v.Country
135 | if p3 ==nil then
136 | p3 = "NilCountry"
137 | end
138 |
139 | p4 = v.LatLongAlt
140 | if p4 ==nil then
141 | p4 = {0,0,0}
142 | end
143 |
144 | p5 = v.Position
145 | if p5 ==nil then
146 | p5 = {0,0,0}
147 | end
148 |
149 | p6 = v.Heading
150 | if p6 ==nil then
151 | p6 = 0
152 | end
153 |
154 | p7 = v.Pitch
155 | if p7 ==nil then
156 | p7 = 0
157 | end
158 |
159 | p8 = v.Bank
160 | if p8 ==nil then
161 | p8 = 0
162 | end
163 |
164 |
165 |
166 |
167 | --[[
168 | if p1 == 28
169 | then
170 | msg = string.format("TankerInfo: planeID:%s, name = %s, country = %s, LatLongAlt = (%f, %f, %f), Heading = %f", p1, p2, p3, p4.Lat,p4.Long,p4.Alt,p5)
171 | else
172 | msg = string.format("FighterInfo: planeID:%s, name = %s, country = %s, LatLongAlt = (%f, %f, %f), Heading = %f", p1, p2, p3, p4.Lat,p4.Long,p4.Alt,p5)
173 | end
174 | --]]
175 |
176 | if k == ID
177 | then
178 | msg = string.format("%f,%f,%f,%f,%f,%f,%f;",t, p5.x, p5.y, p5.z, p6, p7, p8)
179 | mssage = table.concat({mssage,msg})
180 | elseif p1 == 28
181 | then
182 | msg = string.format("%f,%f,%f,%f,%f,%f,%f",t, p5.x, p5.y, p5.z, p6, p7, p8)
183 | mssage = table.concat({mssage,msg})
184 | else
185 | end
186 |
187 | -- msg = string.format("FighterInfo: planeID:%s, name = %s, country = %s, LatLongAlt = (%f, %f, %f), Position = (%f, %f, %f), Heading = %f, Pitch = %f, Bank = %f", ID, p2, p3, p4.Lat, p4.Long, p4.Alt, p5.x, p5.y, p5.z, p6, p7, p8)
188 | -- msg = table.concat({msg,"\n"})
189 |
190 |
191 | end
192 |
193 | socket.try(c:send(string.format("tm%.2f",t)))
194 | socket.try(c:send(string.format("va%.2f",tas)))
195 | socket.try(c:send(string.format("ms%s",mssage)))
196 |
197 |
198 |
199 |
200 | -- Then send data to your file or to your receiving program:
201 | -- 1) File
202 | -- if default_output_file then
203 | -- default_output_file:write(string.format("t = %.2f, name = %s, altBar = %.2f, altRad = %.2f, pitch = %.2f, bank = %.2f, yaw = %.2f \n", t, name, altBar, altRad, 57.3*pitch, 57.3*bank, 57.3*yaw))
204 | -- default_output_file:write(string.format("t = %.2f ,RPM left = %f fuel_internal = %f \n",t,engine.RPM.left,engine.fuel_internal))
205 | -- default_output_file:write(string.format("ADF = %f RMI = %f\n ",57.3*HSI.ADF,57.3*HSI.RMI))
206 | -- end
207 | -- 2) Socket
208 | -- socket.try(c:send("you\n")))
209 | --socket.try(c:send(string.format(" t=%.2f, IAS = %.2f, ID=%.0f, Long=%.4f, x=%.2f, y=%.2f, z=%.2f",t,IAS,ID,Long,x,y,z)))
210 | -- socket.try(c:send(string.format("t = %.2f, name = %s, Long = %.2f, Lat = %.2f, Alt = %.2f\n",t,name, Long, Lat, Alt)))
211 | -- socket.try(c:send(string.format("t = %.2f, name = %s, altBar = %.2f, alrRad = %.2f, pitch = %.2f, bank = %.2f, yaw = %.2f, Hp = %.2f\n", t, name, altRad, altBar, pitch, bank, yaw, engine.HydraulicPressure.left)))
212 | -- ProcessInput()
213 | end
214 |
215 | function LuaExportStop()
216 | -- Works once just after mission stop.
217 | -- Close files and/or connections here.
218 | -- 1) File
219 | -- if default_output_file then
220 | -- default_output_file:close()
221 | -- default_output_file = nil
222 | -- end
223 | -- 2) Socket
224 | socket.try(c:send("quit")) -- to close the listener socket
225 | c:close()
226 | -- local lfs = require("lfs")
227 | -- local io = require("io")
228 | -- f = io.open("D:/input.txt", "w")
229 | -- if f then
230 | -- f:write("\n\n*** fenv:\n")
231 | -- for k, v in pairs(getfenv()) do
232 | -- f:write(tostring(k))
233 | -- f:write("\t")
234 | -- f:write(tostring(v))
235 | -- f:write("\n")
236 | -- end
237 | -- f:close()
238 | -- end
239 |
240 | f:close()
241 | end
242 |
243 | function LuaExportActivityNextEvent(t)
244 | local tNext = t
245 |
246 | -- Put your event code here and increase tNext for the next event
247 | -- so this function will be called automatically at your custom
248 | -- model times.
249 | -- If tNext == t then the activity will be terminated.
250 |
251 | -- For example:
252 | -- 1) File
253 | -- if default_output_file then
254 | -- local o = LoGetWorldObjects()
255 | -- for k,v in pairs(o) do
256 | -- default_output_file:write(string.format("t = %.2f, ID = %d, name = %s, country = %s(%s), LatLongAlt = (%f, %f, %f), heading = %f\n", t, k, v.Name, v.Country, v.Coalition, v.LatLongAlt.Lat, v.LatLongAlt.Long, v.LatLongAlt.Alt, v.Heading))
257 | -- end
258 | -- local trg = LoGetLockedTargetInformation()
259 | -- default_output_file:write(string.format("locked targets ,time = %.2f\n",t))
260 | -- for i,cur in pairs(trg) do
261 | -- default_output_file:write(string.format("ID = %d, position = (%f,%f,%f) , V = (%f,%f,%f),flags = 0x%x\n",cur.ID,cur.position.p.x,cur.position.p.y,cur.position.p.z,cur.velocity.x,cur.velocity.y,cur.velocity.z,cur.flags))
262 | -- end
263 | -- local route = LoGetRoute()
264 | -- default_output_file:write(string.format("t = %f\n",t))
265 | -- if route then
266 | -- default_output_file:write(string.format("Goto_point :\n point_num = %d ,wpt_pos = (%f, %f ,%f) ,next %d\n",route.goto_point.this_point_num,route.goto_point.world_point.x,route.goto_point.world_point.y,route.goto_point.world_point.z,route.goto_point.next_point_num))
267 | -- default_output_file:write(string.format("Route points:\n"))
268 | -- for num,wpt in pairs(route.route) do
269 | -- default_output_file:write(string.format("point_num = %d ,wpt_pos = (%f, %f ,%f) ,next %d\n",wpt.this_point_num,wpt.world_point.x,wpt.world_point.y,wpt.world_point.z,wpt.next_point_num))
270 | -- end
271 | -- end
272 |
273 | -- local stations = LoGetPayloadInfo()
274 | -- if stations then
275 | -- default_output_file:write(string.format("Current = %d \n",stations.CurrentStation))
276 |
277 | -- for i_st,st in pairs (stations.Stations) do
278 | -- local name = LoGetNameByType(st.weapon.level1,st.weapon.level2,st.weapon.level3,st.weapon.level4);
279 | -- if name then
280 | -- default_output_file:write(string.format("weapon = %s ,count = %d \n",name,st.count))
281 | -- else
282 | -- default_output_file:write(string.format("weapon = {%d,%d,%d,%d} ,count = %d \n", st.weapon.level1,st.weapon.level2,st.weapon.level3,st.weapon.level4,st.count))
283 | -- end
284 | -- end
285 | -- end
286 |
287 | -- local Nav = LoGetNavigationInfo()
288 | -- if Nav then
289 | -- default_output_file:write(string.format("%s ,%s ,ACS: %s\n",Nav.SystemMode.master,Nav.SystemMode.submode,Nav.ACS.mode))
290 | -- default_output_file:write(string.format("Requirements :\n\t roll %d\n\t pitch %d\n\t speed %d\n",Nav.Requirements.roll,Nav.Requirements.pitch,Nav.Requirements.speed))
291 | -- end
292 | -- end
293 |
294 |
295 | --tNext = tNext + 1.0
296 | -- 2) Socket
297 | -- local o = LoGetWorldObjects()
298 | -- for k,v in pairs(o) do
299 | -- socket.try(c:send(string.format("t = %.2f, ID = %d, name = %s, country = %s(%s), LatLongAlt = (%f, %f, %f), heading = %f\n", t, k, v.Name, v.Country, v.Coalition, v.LatLongAlt.x, v.LatLongAlt.Long, v.LatLongAlt.Alt, v.Heading)))
300 | -- end
301 |
302 | -- socket.try(c:send(string.format(" t=%.2f, IAS = %.2f, ID=%.0f, Long=%.4f, x=%.2f, y=%.2f, z=%.2f",t,IAS,ID,Long,x,y,z)))
303 |
304 | --tNext = tNext + 0.1
305 |
306 | return tNext
307 | end
308 |
309 | function ProcessInput()
310 |
311 | data = d:receive()
312 |
313 | dataSub0h = string.sub(data,1,1)
314 | dataSub0b = string.sub(data,2,5)
315 | dataSub1h = string.sub(data,6,6)
316 | dataSub1b = string.sub(data,7,10)
317 | dataSub2h = string.sub(data,11,11)
318 | dataSub2b = string.sub(data,12,15)
319 | dataSub3h = string.sub(data,16,16)
320 | dataSub3b = string.sub(data,17,20)
321 | dataSub4h = string.sub(data,21,21)
322 | dataSub4b = string.sub(data,22,25)
323 |
324 | if dataSub0h=="1" then
325 | pitch = -tonumber(dataSub0b)/1000
326 | end
327 | if dataSub0h=="2" then
328 | pitch = tonumber(dataSub0b)/1000
329 | end
330 | if dataSub0h~="0" then
331 | LoSetCommand(2001,pitch)
332 | end
333 |
334 | if dataSub1h=="1" then
335 | roll = -tonumber(dataSub1b)/1000
336 | end
337 | if dataSub1h=="2" then
338 | roll = tonumber(dataSub1b)/1000
339 | end
340 | if dataSub1h~="0" then
341 | LoSetCommand(2002,roll)
342 | end
343 |
344 | if dataSub2h=="1" then
345 | thrust = -tonumber(dataSub2b)/1000
346 | end
347 | if dataSub2h=="2" then
348 | thrust = tonumber(dataSub2b)/1000
349 | end
350 |
351 |
352 | -- local ID = LoGetPlayerPlaneId()
353 | -- local o = LoGetObjectById(ID)
354 | if dataSub2h~="0" then
355 | -- local pt = o.Type.level4
356 | mstr = string.format("%s",p)
357 |
358 | if mstr == "267" then
359 | LoSetCommand(2024,thrust)
360 | else
361 | LoSetCommand(2004,thrust)
362 | end
363 | end
364 |
365 | if dataSub3h=="1" then
366 | selecterV = -tonumber(dataSub3b)/1000
367 | end
368 | if dataSub3h=="2" then
369 | selecterV = tonumber(dataSub3b)/1000
370 | end
371 | if dataSub3h~="0" then
372 | LoSetCommand(2034,selecterV)
373 | end
374 | --JF17 2034
375 | --F18 ???
376 |
377 | if dataSub4h=="1" then
378 | selecterH = -tonumber(dataSub4b)/1000
379 | end
380 | if dataSub4h=="2" then
381 | selecterH = tonumber(dataSub4b)/1000
382 | end
383 | if dataSub4h~="0" then
384 | LoSetCommand(2033,selecterH)
385 | end
386 | --JF17 2033
387 | --F18 ???
388 | end
389 | --[[
390 |
391 | -- Lock On supports Lua coroutines using internal LoCreateCoroutineActivity() and
392 | -- external CoroutineResume() functions. Here is an example of using scripted coroutine.
393 |
394 | Coroutines = {} -- global coroutines table
395 | CoroutineIndex = 0 -- global last created coroutine index
396 |
397 | -- This function will be called by Lock On model timer for every coroutine to resume it
398 | function CoroutineResume(index, tCurrent)
399 | -- Resume coroutine and give it current model time value
400 | coroutine.resume(Coroutines[index], tCurrent)
401 | return coroutine.status(Coroutines[index]) ~= "dead"
402 | -- If status == "dead" then Lock On activity for this coroutine dies too
403 | end
404 |
405 | -- Coroutine function example using coroutine.yield() to suspend
406 | function f(t)
407 | local tNext = t
408 | local file = io.open("./Temp/Coroutine.log", "w")
409 | file:write(string.format("t = %f, started\n", tNext))
410 | tNext = coroutine.yield()
411 | for i = 1,10 do
412 | file:write(string.format("t = %f, continued\n", tNext))
413 | tNext = coroutine.yield()
414 | end
415 | file:write(string.format("t = %f, finished\n", tNext))
416 | file:close()
417 | end
418 |
419 | -- Create your coroutines and save them in Coriutines table, e.g.:
420 | CoroutineIndex = CoroutineIndex + 1
421 | Coroutines[CoroutineIndex] = coroutine.create(f)
422 |
423 | -- Use LoCreateCoroutineActivity(index, tStart, tPeriod) to plan your coroutines
424 | -- activity at model times, e.g.:
425 | LoCreateCoroutineActivity(CoroutineIndex, 1.0, 3.0) -- to start at 1.0 second with 3.0 seconds period
426 | -- Coroutine output in the Coroutine.log file:
427 | -- t = 1.000000, started
428 | -- t = 4.000000, continued
429 | -- t = 7.000000, continued
430 | -- t = 10.000000, continued
431 | -- t = 13.000000, continued
432 | -- t = 16.000000, continued
433 | -- t = 19.000000, continued
434 | -- t = 22.000000, continued
435 | -- t = 25.000000, continued
436 | -- t = 28.000000, continued
437 | -- t = 31.000000, continued
438 | -- t = 34.000000, finished
439 | --]]
440 |
441 | --[[ You can use registered Lock On internal data exporting functions in this script
442 | and in your scripts called from this script.
443 |
444 | Note: following functions are implemented for exporting technology experiments only,
445 | so they may be changed or removed in the future by developers.
446 |
447 | All returned values are Lua numbers if not pointed other type.
448 |
449 | Output:
450 | LoIsObjectExportAllowed() -- returns true if world objects data is available
451 | LoIsSensorExportAllowed() -- returns true if radar/targets data is available
452 | LoIsOwnshipExportAllowed() -- true if ownship data is available
453 |
454 | LoGetModelTime() -- returns current model time (args - 0, results - 1 (sec))
455 | LoGetMissionStartTime() -- returns mission start time (args - 0, results - 1 (sec))
456 | LoGetPilotName() -- (args - 0, results - 1 (text string))
457 | LoGetPlayerPlaneId() -- (args - 0, results - 1 (number))
458 | LoGetIndicatedAirSpeed() -- (args - 0, results - 1 (m/s))
459 | LoGetTrueAirSpeed() -- (args - 0, results - 1 (m/s))
460 | LoGetAltitudeAboveSeaLevel() -- (args - 0, results - 1 (meters))
461 | LoGetAltitudeAboveGroundLevel() -- (args - 0, results - 1 (meterst))
462 | LoGetAngleOfAttack() -- (args - 0, results - 1 (rad))
463 | LoGetAccelerationUnits() -- (args - 0, results - table {x = Nx,y = NY,z = NZ} 1 (G))
464 | LoGetVerticalVelocity() -- (args - 0, results - 1(m/s))
465 | LoGetMachNumber() -- (args - 0, results - 1)
466 | LoGetADIPitchBankYaw() -- (args - 0, results - 3 (rad))
467 | LoGetMagneticYaw() -- (args - 0, results - 1 (rad)
468 | LoGetGlideDeviation() -- (args - 0,results - 1)( -1 < result < 1)
469 | LoGetSideDeviation() -- (args - 0,results - 1)( -1 < result < 1)
470 | LoGetSlipBallPosition() -- (args - 0,results - 1)( -1 < result < 1)
471 | LoGetBasicAtmospherePressure() -- (args - 0,results - 1) (mm hg)
472 | LoGetControlPanel_HSI() -- (args - 0,results - table)
473 | result =
474 | {
475 | ADF_raw, (rad)
476 | RMI_raw, (rad)
477 | Heading_raw, (rad)
478 | HeadingPointer, (rad)
479 | Course, (rad)
480 | BearingPointer, (rad)
481 | CourseDeviation, (rad)
482 | }
483 | LoGetEngineInfo() -- (args - 0 ,results = table)
484 | engineinfo =
485 | {
486 | RPM = {left, right},(%)
487 | Temperature = { left, right}, (Celcium degrees)
488 | HydraulicPressure = {left ,right},kg per square centimeter
489 | FuelConsumption = {left ,right},kg per sec
490 | fuel_internal -- fuel quantity internal tanks kg
491 | fuel_external -- fuel quantity external tanks kg
492 |
493 | }
494 |
495 | LoGetRoute() -- (args - 0,results = table)
496 | get_route_result =
497 | {
498 | goto_point, -- next waypoint
499 | route -- all waypoints of route (or approach route if arrival or landing)
500 | }
501 | waypoint_table =
502 | {
503 | this_point_num, -- number of point ( >= 0)
504 | world_point = {x,y,z}, -- world position in meters
505 | speed_req, -- speed at point m/s
506 | estimated_time, -- sec
507 | next_point_num, -- if -1 that's the end of route
508 | point_action -- name of action "ATTACKPOINT","TURNPOINT","LANDING","TAKEOFF"
509 | }
510 | LoGetNavigationInfo() (args - 0,results - 1( table )) -- information about ACS
511 | get_navigation_info_result =
512 | {
513 | SystemMode = {master,submode}, -- (string,string) current mode and submode
514 | --[=[
515 | master values (depend of plane type)
516 | "NAV" -- navigation
517 | "BVR" -- beyond visual range AA mode
518 | "CAC" -- close air combat
519 | "LNG" -- longitudinal mode
520 | "A2G" -- air to ground
521 | "OFF" -- mode is absent
522 | submode values (depend of plane type and master mode)
523 | "NAV" submodes
524 | {
525 | "ROUTE"
526 | "ARRIVAL"
527 | "LANDING"
528 | "OFF"
529 | }
530 | "BVR" submodes
531 | {
532 | "GUN" -- Gunmode
533 | "RWS" -- RangeWhileSearch
534 | "TWS" -- TrackWhileSearch
535 | "STT" -- SingleTrackTarget (Attack submode)
536 | "OFF"
537 | }
538 | "CAC" submodes
539 | {
540 | "GUN"
541 | "VERTICAL_SCAN"
542 | "BORE"
543 | "HELMET"
544 | "STT"
545 | "OFF"
546 | }
547 | "LNG" submodes
548 | {
549 | "GUN"
550 | "OFF"
551 | "FLOOD" -- F-15 only
552 | }
553 | "A2G" submodes
554 | {
555 | "GUN"
556 | "ETS" -- Emitter Targeting System On
557 | "PINPOINT"
558 | "UNGUIDED" -- unguided weapon (free fall bombs, dispensers , rockets)
559 | "OFF"
560 | }
561 | --]=]
562 | Requirements = -- required parameters of flight
563 | {
564 | roll, -- required roll,pitch.. , etc.
565 | pitch,
566 | speed,
567 | vertical_speed,
568 | altitude,
569 | }
570 | ACS = -- current state of the Automatic Control System
571 | {
572 | mode = string ,
573 | --[=[
574 | mode values are :
575 | "FOLLOW_ROUTE",
576 | "BARO_HOLD",
577 | "RADIO_HOLD",
578 | "BARO_ROLL_HOLD",
579 | "HORIZON_HOLD",
580 | "PITCH_BANK_HOLD",
581 | "OFF"
582 | --]=]
583 | autothrust , -- 1(true) if autothrust mode is on or 0(false) when not;
584 | }
585 | }
586 | LoGetMCPState() -- (args - 0, results - 1 (table of key(string).value(boolean))
587 | returned table keys for LoGetMCPState():
588 | "LeftEngineFailure"
589 | "RightEngineFailure"
590 | "HydraulicsFailure"
591 | "ACSFailure"
592 | "AutopilotFailure"
593 | "AutopilotOn"
594 | "MasterWarning"
595 | "LeftTailPlaneFailure"
596 | "RightTailPlaneFailure"
597 | "LeftAileronFailure"
598 | "RightAileronFailure"
599 | "CanopyOpen"
600 | "CannonFailure"
601 | "StallSignalization"
602 | "LeftMainPumpFailure"
603 | "RightMainPumpFailure"
604 | "LeftWingPumpFailure"
605 | "RightWingPumpFailure"
606 | "RadarFailure"
607 | "EOSFailure"
608 | "MLWSFailure"
609 | "RWSFailure"
610 | "ECMFailure"
611 | "GearFailure"
612 | "MFDFailure"
613 | "HUDFailure"
614 | "HelmetFailure"
615 | "FuelTankDamage"
616 | LoGetObjectById() -- (args - 1 (number), results - 1 (table))
617 | Returned object table structure:
618 | {
619 | Name =
620 | Type = {level1,level2,level3,level4}, ( see Scripts/database/wsTypes.lua) Subtype is absent now
621 | Country = number ( see Scripts/database/db_countries.lua
622 | Coalition =
623 | CoalitionID = number ( 1 or 2 )
624 | LatLongAlt = { Lat = , Long = , Alt = }
625 | Heading = radians
626 | Pitch = radians
627 | Bank = radians
628 | Position = {x,y,z} -- in internal DCS coordinate system ( see convertion routnes below)
629 | only for units ( Planes,Hellicopters,Tanks etc)
630 | UnitName = unit name from mission (UTF8)
631 | GroupName = unit name from mission (UTF8)
632 | Flags = {
633 | RadarActive = true if the unit has its radar on
634 | Human = true if the unit is human-controlled
635 | Jamming = true if the unit uses EMI jamming
636 | IRJamming = -- same for IR jamming
637 | Born = true if the unit is born (activated)
638 | AI_ON = true if the unit's AI is active
639 | Invisible = true if the unit is invisible
640 | Static - true if the unit is a static object
641 | }
642 | }
643 |
644 |
645 | LoGetWorldObjects() -- (args - 0- 1, results - 1 (table of object tables)) arg can be
646 | "units" (default)
647 | "ballistic" - for different type of unguided munition ()bombs,shells,rockets)
648 | "airdromes" - to get airdrome objects
649 | Returned table index = object identificator
650 | Returned object table structure (see LoGetObjectById())
651 |
652 | LoGetSelfData return the same result as LoGetObjectById but only for your aircraft and not depended on anti-cheat setting in Export/Config.lua
653 |
654 | LoGetAltitude(x, z) -- (args - 2 : meters, results - 1 : altitude above terrain surface, meters)
655 |
656 | LoGetCameraPosition() -- (args - 0, results - 1 : view camera current position table:
657 | {
658 | x = {x = ..., y = ..., z = ...}, -- orientation x-vector
659 | y = (x = ..., y = ..., z = ...}, -- orientation y-vector
660 | z = {x = ..., y = ..., z = ...}, -- orientation z-vector
661 | p = {x = ..., y = ..., z = ...} -- point vector
662 | }
663 | all coordinates are in meters. You can use Vector class for position vectors.
664 |
665 | -- Weapon Control System
666 | LoGetNameByType () -- args 4 (number : level1,level2,level3,level4), result string
667 |
668 | LoGetTargetInformation() -- (args - 0, results - 1 (table of current targets tables))
669 | LoGetLockedTargetInformation() -- (args - 0, results - 1 (table of current locked targets tables))
670 | this functions return the table of the next target data
671 | target =
672 | {
673 | ID , -- world ID (may be 0 ,when ground point track)
674 | type = {level1,level2,level3,level4}, -- world database classification
675 | country = , -- object country
676 | position = {x = {x,y,z}, -- orientation X ort
677 | y = {x,y,z}, -- orientation Y ort
678 | z = {x,y,z}, -- orientation Z ort
679 | p = {x,y,z}} -- position of the center
680 | velocity = {x,y,z}, -- world velocity vector m/s
681 | distance = , -- distance in meters
682 | convergence_velocity = , -- closing speed in m/s
683 | mach = , -- M number
684 | delta_psi = , -- aspect angle rad
685 | fim = , -- viewing angle horizontal (in your body axis) rad
686 | fin = , -- viewing angle vertical (in your body axis) rad
687 | flags = , -- field with constants detemining method of the tracking
688 | -- whTargetRadarView = 0x0002; -- Radar review (BVR)
689 | -- whTargetEOSView = 0x0004; -- EOS review (BVR)
690 | -- whTargetRadarLock = 0x0008; -- Radar lock (STT) == whStaticObjectLock (pinpoint) (static objects,buildings lock)
691 | -- whTargetEOSLock = 0x0010; -- EOS lock (STT) == whWorldObjectLock (pinpoint) (ground units lock)
692 | -- whTargetRadarTrack = 0x0020; -- Radar lock (TWS)
693 | -- whTargetEOSTrack = 0x0040; -- Radar lock (TWS) == whImpactPointTrack (pinpoint) (ground point track)
694 | -- whTargetNetHumanPlane = 0x0200; -- net HumanPlane
695 | -- whTargetAutoLockOn = 0x0400; -- EasyRadar autolockon
696 | -- whTargetLockOnJammer = 0x0800; -- HOJ mode
697 |
698 | reflection = , -- target cross section square meters
699 | course = , -- target course rad
700 | isjamming = , -- target ECM on or not
701 | start_of_lock = , -- time of the beginning of lock
702 | forces = { x,y,z}, -- vector of the acceleration units
703 | updates_number = , -- number of the radar updates
704 |
705 | jammer_burned = true/false -- indicates that jammer are burned
706 | }
707 | LoGetSightingSystemInfo() -- sight system info
708 | {
709 | Manufacturer = "RUS"/"USA"
710 | LaunchAuthorized = true/false
711 | ScanZone =
712 | {
713 | position
714 | {
715 | azimuth
716 | elevation
717 | if Manufacturer == "RUS" then
718 | distance_manual
719 | exceeding_manual
720 | end
721 | }
722 | coverage_H
723 | {
724 | min
725 | max
726 | }
727 | size
728 | {
729 | azimuth
730 | elevation
731 | }
732 | }
733 | scale
734 | {
735 | distance
736 | azimuth
737 | }
738 | TDC
739 | {
740 | x
741 | y
742 | }
743 |
744 | radar_on = true/false
745 | optical_system_on= true/false
746 | ECM_on= true/false
747 | laser_on= true/false
748 |
749 | PRF =
750 | {
751 | current , -- current PRF value ( changed in ILV mode ) , values are "MED" or "HI"
752 | selection , -- selection value can be "MED" "HI" or "ILV"
753 | }
754 |
755 | }
756 | LoGetTWSInfo() -- return Threat Warning System status (result the table )
757 | result_of_LoGetTWSInfo =
758 | {
759 | Mode = , -- current mode (0 - all ,1 - lock only,2 - launch only
760 | Emitters = {table of emitters}
761 | }
762 | emitter_table =
763 | {
764 | ID =, -- world ID
765 | Type = {level1,level2,level3,level4}, -- world database classification of emitter
766 | Power =, -- power of signal
767 | Azimuth =,
768 | Priority =,-- priority of emitter (int)
769 | SignalType =, -- string with vlues: "scan" ,"lock", "missile_radio_guided","track_while_scan";
770 | }
771 | LoGetPayloadInfo() -- return weapon stations
772 | result_of_LoGetPayloadInfo
773 | {
774 | CurrentStation = , -- number of current station (0 if no station selected)
775 | Stations = {},-- table of stations
776 | Cannon =
777 | {
778 | shells -- current shells count
779 | }
780 | }
781 | station
782 | {
783 | container = true/false , -- is station container
784 | weapon = {level1,level2,level3,level4} , -- world database classification of weapon
785 | count = ,
786 | }
787 | LoGetMechInfo() -- mechanization info
788 | result_is =
789 | {
790 | gear = {status,value,main = {left = {rod},right = {rod},nose = {rod}}}
791 | flaps = {status,value}
792 | speedbrakes = {status,value}
793 | refuelingboom = {status,value}
794 | airintake = {status,value}
795 | noseflap = {status,value}
796 | parachute = {status,value}
797 | wheelbrakes = {status,value}
798 | hook = {status,value}
799 | wing = {status,value}
800 | canopy = {status,value}
801 | controlsurfaces = {elevator = {left,right},eleron = {left,right},rudder = {left,right}} -- relative vlues (-1,1) (min /max) (sorry:(
802 | }
803 |
804 | LoGetRadioBeaconsStatus() -- beacons lock
805 | {
806 | airfield_near ,
807 | airfield_far,
808 | course_deviation_beacon_lock ,
809 | glideslope_deviation_beacon_lock
810 | }
811 |
812 | LoGetWingInfo() -- your wingmens info result is vector of wingmens with value:
813 | wingmen_is =
814 | {
815 | wingmen_id -- world id of wingmen
816 | wingmen_position -- world position {x = {x,y,z}, -- orientation X ort
817 | y = {x,y,z}, -- orientation Y ort
818 | z = {x,y,z}, -- orientation Z ort
819 | p = {x,y,z}} -- position of the center
820 | current_target -- world id of target
821 | ordered_target -- world id of target
822 | current_task -- name of task
823 | ordered_task -- name of task
824 | --[=[
825 | name can be :
826 | "NOTHING"
827 | "ROUTE"
828 | "DEPARTURE"
829 | "ARRIVAL"
830 | "REFUELING"
831 | "SOS" -- Save Soul of your Wingmen :)
832 | "ROUTE"
833 | "INTERCEPT"
834 | "PATROL"
835 | "AIR_ATTACK"
836 | "REFUELING"
837 | "AWACS"
838 | "RECON"
839 | "ESCORT"
840 | "PINPOINT"
841 | "CAS"
842 | "MISSILE_EVASION"
843 | "ENEMY_EVASION"
844 | "SEAD"
845 | "ANTISHIP"
846 | "RUNWAY_ATTACK"
847 | "TRANSPORT"
848 | "LANDING"
849 | "TAKEOFF"
850 | "TAXIING"
851 | --]=]
852 |
853 | }
854 |
855 | Coordinates convertion :
856 | {x,y,z} = LoGeoCoordinatesToLoCoordinates(longitude_degrees,latitude_degrees)
857 | {latitude,longitude} = LoLoCoordinatesToGeoCoordinates(x,z);
858 |
859 | LoGetVectorVelocity = {x,y,z} -- vector of self velocity (world axis)
860 | LoGetAngularVelocity = {x,y,z} -- angular velocity euler angles , rad per sec
861 | LoGetVectorWindVelocity = {x,y,z} -- vector of wind velocity (world axis)
862 | LoGetWingTargets = table of {x,y,z}
863 | LoGetSnares = {chaff,flare}
864 | Input:
865 | LoSetCameraPosition(pos) -- (args - 1: view camera current position table, results - 0)
866 | pos table structure:
867 | {
868 | x = {x = ..., y = ..., z = ...}, -- orientation x-vector
869 | y = (x = ..., y = ..., z = ...}, -- orientation y-vector
870 | z = {x = ..., y = ..., z = ...}, -- orientation z-vector
871 | p = {x = ..., y = ..., z = ...} -- point vector
872 | }
873 | all coordinates are in meters. You can use Vector class for position vectors.
874 |
875 | LoSetCommand(command, value) -- (args - 2, results - 0)
876 | -1.0 <= value <= 1.0
877 |
878 | Some analogous joystick/mouse input commands:
879 | command = 2001 - joystick pitch
880 | command = 2002 - joystick roll
881 | command = 2003 - joystick rudder
882 | -- Thrust values are inverted for some internal reasons, sorry.
883 | command = 2004 - joystick thrust (both engines)
884 | command = 2005 - joystick left engine thrust
885 | command = 2006 - joystick right engine thrust
886 | command = 2007 - mouse camera rotate left/right
887 | command = 2008 - mouse camera rotate up/down
888 | command = 2009 - mouse camera zoom
889 | command = 2010 - joystick camera rotate left/right
890 | command = 2011 - joystick camera rotate up/down
891 | command = 2012 - joystick camera zoom
892 | command = 2013 - mouse pitch
893 | command = 2014 - mouse roll
894 | command = 2015 - mouse rudder
895 | -- Thrust values are inverted for some internal reasons, sorry.
896 | command = 2016 - mouse thrust (both engines)
897 | command = 2017 - mouse left engine thrust
898 | command = 2018 - mouse right engine thrust
899 | command = 2019 - mouse trim pitch
900 | command = 2020 - mouse trim roll
901 | command = 2021 - mouse trim rudder
902 | command = 2022 - joystick trim pitch
903 | command = 2023 - joystick trim roll
904 | command = 2024 - trim rudder
905 | command = 2025 - mouse rotate radar antenna left/right
906 | command = 2026 - mouse rotate radar antenna up/down
907 | command = 2027 - joystick rotate radar antenna left/right
908 | command = 2028 - joystick rotate radar antenna up/down
909 | command = 2029 - mouse MFD zoom
910 | command = 2030 - joystick MFD zoom
911 | command = 2031 - mouse move selecter left/right
912 | command = 2032 - mouse move selecter up/down
913 | command = 2033 - joystick move selecter left/right
914 | command = 2034 - joystick move selecter up/down
915 |
916 | Some discrete keyboard input commands (value is absent):
917 | command = 7 -- Cockpit view
918 | command = 8 -- External view
919 | command = 9 -- Fly-by view
920 | command = 10 -- Ground units view
921 | command = 11 -- Civilian transport view
922 | command = 12 -- Chase view
923 | command = 13 -- Navy view
924 | command = 14 -- Close air combat view
925 | command = 15 -- Theater view
926 | command = 16 -- Airfield (free camera) view
927 | command = 17 -- Instruments panel view on
928 | command = 18 -- Instruments panel view off
929 | command = 19 -- Padlock toggle
930 | command = 20 -- Stop padlock (in cockpit only)
931 | command = 21 -- External view for my plane
932 | command = 22 -- Automatic chase mode for launched weapon
933 | command = 23 -- View allies only filter
934 | command = 24 -- View enemies only filter
935 | command = 26 -- View allies & enemies filter
936 | command = 28 -- Rotate the camera left fast
937 | command = 29 -- Rotate the camera right fast
938 | command = 30 -- Rotate the camera up fast
939 | command = 31 -- Rotate the camera down fast
940 | command = 32 -- Rotate the camera left slow
941 | command = 33 -- Rotate the camera right slow
942 | command = 34 -- Rotate the camera up slow
943 | command = 35 -- Rotate the camera down slow
944 | command = 36 -- Return the camera to default position
945 | command = 37 -- View zoom in fast
946 | command = 38 -- View zoom out fast
947 | command = 39 -- View zoom in slow
948 | command = 40 -- View zoom out slow
949 | command = 41 -- Pan the camera left
950 | command = 42 -- Pan the camera right
951 | command = 43 -- Pan the camera up
952 | command = 44 -- Pan the camera down
953 | command = 45 -- Pan the camera left slow
954 | command = 46 -- Pan the camera right slow
955 | command = 47 -- Pan the camera up slow
956 | command = 48 -- Pan the camera down slow
957 | command = 49 -- Disable panning the camera
958 | command = 50 -- Allies chat
959 | command = 51 -- Mission quit
960 | command = 52 -- Suspend/resume model time
961 | command = 53 -- Accelerate model time
962 | command = 54 -- Step by step simulation when model time is suspended
963 | command = 55 -- Take control in the track
964 | command = 57 -- Common chat
965 | command = 59 -- Altitude stabilization
966 | command = 62 -- Autopilot
967 | command = 63 -- Auto-thrust
968 | command = 64 -- Power up
969 | command = 65 -- Power down
970 | command = 68 -- Gear
971 | command = 69 -- Hook
972 | command = 70 -- Pack wings
973 | command = 71 -- Canopy
974 | command = 72 -- Flaps
975 | command = 73 -- Air brake
976 | command = 74 -- Wheel brakes on
977 | command = 75 -- Wheel brakes off
978 | command = 76 -- Release drogue chute
979 | command = 77 -- Drop snar
980 | command = 78 -- Wingtip smoke
981 | command = 79 -- Refuel on
982 | command = 80 -- Refuel off
983 | command = 81 -- Salvo
984 | command = 82 -- Jettison weapons
985 | command = 83 -- Eject
986 | command = 84 -- Fire on
987 | command = 85 -- Fire off
988 | command = 86 -- Radar
989 | command = 87 -- EOS
990 | command = 88 -- Rotate the radar antenna left
991 | command = 89 -- Rotate the radar antenna right
992 | command = 90 -- Rotate the radar antenna up
993 | command = 91 -- Rotate the radar antenna down
994 | command = 92 -- Center the radar antenna
995 | command = 93 -- Trim left
996 | command = 94 -- Trim right
997 | command = 95 -- Trim up
998 | command = 96 -- Trim down
999 | command = 97 -- Cancel trimming
1000 | command = 98 -- Trim the rudder left
1001 | command = 99 -- Trim the rudder right
1002 | command = 100 -- Lock the target
1003 | command = 101 -- Change weapon
1004 | command = 102 -- Change target
1005 | command = 103 -- MFD zoom in
1006 | command = 104 -- MFD zoom out
1007 | command = 105 -- Navigation mode (value 1, 2, 3, 4 for navmode_none, navmode_route, navmode_arrival ,navmode_landing )
1008 | command = 106 -- BVR mode
1009 | command = 107 -- VS mode
1010 | command = 108 -- Bore mode
1011 | command = 109 -- Helmet mode
1012 | command = 110 -- FI0 mode
1013 | command = 111 -- A2G mode
1014 | command = 112 -- Grid mode
1015 | command = 113 -- Cannon
1016 | command = 114 -- Dispatch wingman - complete mission and RTB
1017 | command = 115 -- Dispatch wingman - complete mission and rejoin
1018 | command = 116 -- Dispatch wingman - toggle formation
1019 | command = 117 -- Dispatch wingman - join up formation
1020 | command = 118 -- Dispatch wingman - attack my target
1021 | command = 119 -- Dispatch wingman - cover my six
1022 | command = 120 -- Take off from ship
1023 | command = 121 -- Cobra
1024 | command = 122 -- Sound on/off
1025 | command = 123 -- Sound recording on
1026 | command = 124 -- Sound recording off
1027 | command = 125 -- View right mirror on
1028 | command = 126 -- View right mirror off
1029 | command = 127 -- View left mirror on
1030 | command = 128 -- View left mirror off
1031 | command = 129 -- Natural head movement view
1032 | command = 131 -- LSO view
1033 | command = 135 -- Weapon to target view
1034 | command = 136 -- Active jamming
1035 | command = 137 -- Increase details level
1036 | command = 138 -- Decrease details level
1037 | command = 139 -- Scan zone left
1038 | command = 140 -- Scan zone right
1039 | command = 141 -- Scan zone up
1040 | command = 142 -- Scan zone down
1041 | command = 143 -- Unlock target
1042 | command = 144 -- Reset master warning
1043 | command = 145 -- Flaps on
1044 | command = 146 -- Flaps off
1045 | command = 147 -- Air brake on
1046 | command = 148 -- Air brake off
1047 | command = 149 -- Weapons view
1048 | command = 150 -- Static objects view
1049 | command = 151 -- Mission targets view
1050 | command = 152 -- Info bar details
1051 | command = 155 -- Refueling boom
1052 | command = 156 -- HUD color selection
1053 | command = 158 -- Jump to terrain view
1054 | command = 159 -- Starts moving F11 camera forward
1055 | command = 160 -- Starts moving F11 camera backward
1056 | command = 161 -- Power up left engine
1057 | command = 162 -- Power down left engine
1058 | command = 163 -- Power up right engine
1059 | command = 164 -- Power down right engine
1060 | command = 169 -- Immortal mode
1061 | command = 175 -- On-board lights
1062 | command = 176 -- Drop snar once
1063 | command = 177 -- Default cockpit angle of view
1064 | command = 178 -- Jettison fuel tanks
1065 | command = 179 -- Wingmen commands panel
1066 | command = 180 -- Reverse objects switching in views
1067 | command = 181 -- Forward objects switching in views
1068 | command = 182 -- Ignore current object in views
1069 | command = 183 -- View all ignored objects in views again
1070 | command = 184 -- Padlock terrain point
1071 | command = 185 -- Reverse the camera
1072 | command = 186 -- Plane up
1073 | command = 187 -- Plane down
1074 | command = 188 -- Bank left
1075 | command = 189 -- Bank right
1076 | command = 190 -- Local camera rotation mode
1077 | command = 191 -- Decelerate model time
1078 | command = 192 -- Jump into the other plane
1079 | command = 193 -- Nose down
1080 | command = 194 -- Nose down end
1081 | command = 195 -- Nose up
1082 | command = 196 -- Nose up end
1083 | command = 197 -- Bank left
1084 | command = 198 -- Bank left end
1085 | command = 199 -- Bank right
1086 | command = 200 -- Bank right end
1087 | command = 201 -- Rudder left
1088 | command = 202 -- Rudder left end
1089 | command = 203 -- Rudder right
1090 | command = 204 -- Rudder right end
1091 | command = 205 -- View up right
1092 | command = 206 -- View down right
1093 | command = 207 -- View down left
1094 | command = 208 -- View up left
1095 | command = 209 -- View stop
1096 | command = 210 -- View up right slow
1097 | command = 211 -- View down right slow
1098 | command = 212 -- View down left slow
1099 | command = 213 -- View up left slow
1100 | command = 214 -- View stop slow
1101 | command = 215 -- Stop trimming
1102 | command = 226 -- Scan zone up right
1103 | command = 227 -- Scan zone down right
1104 | command = 228 -- Scan zone down left
1105 | command = 229 -- Scan zone up left
1106 | command = 230 -- Scan zone stop
1107 | command = 231 -- Radar antenna up right
1108 | command = 232 -- Radar antenna down right
1109 | command = 233 -- Radar antenna down left
1110 | command = 234 -- Radar antenna up left
1111 | command = 235 -- Radar antenna stop
1112 | command = 236 -- Save snap view angles
1113 | command = 237 -- Cockpit panel view toggle
1114 | command = 245 -- Coordinates units toggle
1115 | command = 246 -- Disable model time acceleration
1116 | command = 252 -- Automatic spin recovery
1117 | command = 253 -- Speed retention
1118 | command = 254 -- Easy landing
1119 | command = 258 -- Threat missile padlock
1120 | command = 259 -- All missiles padlock
1121 | command = 261 -- Marker state
1122 | command = 262 -- Decrease radar scan area
1123 | command = 263 -- Increase radar scan area
1124 | command = 264 -- Marker state plane
1125 | command = 265 -- Marker state rocket
1126 | command = 266 -- Marker state plane ship
1127 | command = 267 -- Ask AWACS home airbase
1128 | command = 268 -- Ask AWACS available tanker
1129 | command = 269 -- Ask AWACS nearest target
1130 | command = 270 -- Ask AWACS declare target
1131 | command = 271 -- Easy radar
1132 | command = 272 -- Auto lock on nearest aircraft
1133 | command = 273 -- Auto lock on center aircraft
1134 | command = 274 -- Auto lock on next aircraft
1135 | command = 275 -- Auto lock on previous aircraft
1136 | command = 276 -- Auto lock on nearest surface target
1137 | command = 277 -- Auto lock on center surface target
1138 | command = 278 -- Auto lock on next surface target
1139 | command = 279 -- Auto lock on previous surface target
1140 | command = 280 -- Change cannon rate of fire
1141 | command = 281 -- Change ripple quantity
1142 | command = 282 -- Change ripple interval
1143 | command = 283 -- Switch master arm
1144 | command = 284 -- Change release mode
1145 | command = 285 -- Change radar mode RWS/TWS
1146 | command = 286 -- Change RWR/SPO mode
1147 | command = 288 -- Flight clock reset
1148 | command = 289 -- Zoom in slow stop
1149 | command = 290 -- Zoom out slow stop
1150 | command = 291 -- Zoom in stop
1151 | command = 292 -- Zoom out stop
1152 | command = 295 -- View horizontal stop
1153 | command = 296 -- View vertical stop
1154 | command = 298 -- Jump to fly-by view
1155 | command = 299 -- Camera jiggle
1156 | command = 300 -- Cockpit illumination
1157 | command = 308 -- Change ripple interval down
1158 | command = 309 -- Engines start
1159 | command = 310 -- Engines stop
1160 | command = 311 -- Left engine start
1161 | command = 312 -- Right engine start
1162 | command = 313 -- Left engine stop
1163 | command = 314 -- Right engine stop
1164 | command = 315 -- Power on/off
1165 | command = 316 -- Altimeter pressure increase
1166 | command = 317 -- Altimeter pressure decrease
1167 | command = 318 -- Altimeter pressure stop
1168 | command = 321 -- Fast mouse in views
1169 | command = 322 -- Slow mouse in views
1170 | command = 323 -- Normal mouse in views
1171 | command = 326 -- HUD only view
1172 | command = 327 -- Recover my plane
1173 | command = 328 -- Toggle gear light Near/Far/Off
1174 | command = 331 -- Fast keyboard in views
1175 | command = 332 -- Slow keyboard in views
1176 | command = 333 -- Normal keyboard in views
1177 | command = 334 -- Zoom in for external views
1178 | command = 335 -- Stop zoom in for external views
1179 | command = 336 -- Zoom out for external views
1180 | command = 337 -- Stop zoom out for external views
1181 | command = 338 -- Default zoom in external views
1182 | command = 341 -- A2G combat view
1183 | command = 342 -- Camera view up-left
1184 | command = 343 -- Camera view up-right
1185 | command = 344 -- Camera view down-left
1186 | command = 345 -- Camera view down right
1187 | command = 346 -- Camera pan mode toggle
1188 | command = 347 -- Return the camera
1189 | command = 348 -- Trains/cars toggle
1190 | command = 349 -- Launch permission override
1191 | command = 350 -- Release weapon
1192 | command = 351 -- Stop release weapon
1193 | command = 352 -- Return camera base
1194 | command = 353 -- Camera view up-left slow
1195 | command = 354 -- Camera view up-right slow
1196 | command = 355 -- Camera view down-left slow
1197 | command = 356 -- Camera view down-right slow
1198 | command = 357 -- Drop flare once
1199 | command = 358 -- Drop chaff once
1200 | command = 359 -- Rear view
1201 | command = 360 -- Scores window
1202 | command = 386 -- PlaneStabPitchBank
1203 | command = 387 -- PlaneStabHbarBank
1204 | command = 388 -- PlaneStabHorizont
1205 | command = 389 -- PlaneStabHbar
1206 | command = 390 -- PlaneStabHrad
1207 | command = 391 -- Active IR jamming on/off
1208 | command = 392 -- Laser range-finder on/off
1209 | command = 393 -- Night TV on/off(IR or LLTV)
1210 | command = 394 -- Change radar PRF
1211 | command = 395 -- Keep F11 camera altitude over terrain
1212 | command = 396 -- SnapView0
1213 | command = 397 -- SnapView1
1214 | command = 398 -- SnapView2
1215 | command = 399 -- SnapView3
1216 | command = 400 -- SnapView4
1217 | command = 401 -- SnapView5
1218 | command = 402 -- SnapView6
1219 | command = 403 -- SnapView7
1220 | command = 404 -- SnapView8
1221 | command = 405 -- SnapView9
1222 | command = 406 -- SnapViewStop
1223 | command = 407 -- F11 view binocular mode
1224 | command = 408 -- PlaneStabCancel
1225 | command = 409 -- ThreatWarnSoundVolumeDown
1226 | command = 410 -- ThreatWarnSoundVolumeUp
1227 | command = 411 -- F11 binocular view laser range-finder on/off
1228 | command = 412 -- PlaneIncreaseBase_Distance
1229 | command = 413 -- PlaneDecreaseBase_Distance
1230 | command = 414 -- PlaneStopBase_Distance
1231 | command = 425 -- F11 binocular view IR mode on/off
1232 | command = 426 -- F8 view player targets / all targets
1233 | command = 427 -- Plane autopilot override on
1234 | command = 428 -- Plane autopilot override off
1235 | command = 429 -- Plane route autopilot on/off
1236 | command = 430 -- Gear up
1237 | command = 431 -- Gear down
1238 |
1239 | To be continued...
1240 | --]]
1241 |
1242 | -- LoEnableExternalFlightModel() call one time in start
1243 | -- LoUpdateExternalFlightModel(binary_data) update function
1244 |
1245 |
1246 | --LoGetHelicopterFMData()
1247 | -- return table with fm data
1248 | --{
1249 | --G_factor = {x,y,z } in cockpit
1250 | --speed = {x,y,z} center of mass ,body axis
1251 | --acceleration= {x,y,z} center of mass ,body axis
1252 | --angular_speed= {x,y,z} rad/s
1253 | --angular_acceleration= {x,y,z} rad/s^2
1254 | --yaw radians
1255 | --pitch radians
1256 | --roll radians
1257 | --}
1258 |
1259 | --#ifndef _EXTERNAL_FM_DATA_H
1260 | --#define _EXTERNAL_FM_DATA_H
1261 |
1262 | --struct external_FM_data
1263 | --{
1264 | -- double orientation_X[3];
1265 | -- double orientation_Y[3];
1266 | -- double orientation_Z[3];
1267 | -- double pos[3];
1268 |
1269 | -- //
1270 |
1271 | -- double velocity[3];
1272 | -- double acceleration[3];
1273 | -- double omega[3];
1274 | --};
1275 | -- #endif _EXTERNAL_FM_DATA_H
1276 |
1277 |
1278 | -- you can export render targets via shared memory interface
1279 | -- using next functions
1280 | -- LoSetSharedTexture(name) -- register texture with name "name" to export
1281 | -- LoRemoveSharedTexture(name) -- copy texture with name "name" to named shared memory area "name"
1282 | -- LoUpdateSharedTexture(name) -- unregister texture
1283 | -- texture exported like Windows BMP file
1284 | -- --------------------------------
1285 | -- |BITMAPFILEHEADER |
1286 | -- |BITMAPINFOHEADER |
1287 | -- |bits |
1288 | -- --------------------------------
1289 | -- sample textures : "mfd0" - full SHKVAL screen
1290 | -- "mfd1" - ABRIS map screen
1291 | -- "mfd2" - not used
1292 | -- "mfd3" - not used
1293 | -- "mirrors" - mirrors
--------------------------------------------------------------------------------