Keychron Hardware Design Skill
Keychron硬件设计技能
Skill by
ara.so — Design Skills collection.
This skill enables AI agents to help developers work with Keychron's production-grade hardware design files for 135+ keyboard and mouse models. The repository contains CAD assets in STEP, DXF, DWG, and PDF formats covering C Pro 8K, Q, Q Pro, Q HE, Q Max, K Pro, K Max, K HE, V Max, P HE series keyboards and M/G series mice.
该技能可让AI Agent协助开发者使用Keychron针对135+款键盘和鼠标型号提供的专业级硬件设计文件。仓库中包含STEP、DXF、DWG和PDF格式的CAD资源,覆盖C Pro 8K、Q、Q Pro、Q HE、Q Max、K Pro、K Max、K HE、V Max、P HE系列键盘以及M/G系列鼠标。
Repository: Keychron/Keychron-Keyboards-Hardware-Design
Stars: 3,376 (80 stars/day)
License: Source-available (personal/educational use; original compatible accessories exempt from commercial restrictions)
File Types: STEP (.stp), DXF, DWG, PDF
Component Categories: Cases, plates, encoders, stabilizers, keycaps, full models, shells
仓库地址: Keychron/Keychron-Keyboards-Hardware-Design
星标数: 3376(日均80个星标)
许可证: 源码可用(个人/教育用途;原创兼容配件不受商用限制)
文件类型: STEP(.stp)、DXF、DWG、PDF
组件分类: 外壳、定位板、编码器、卫星轴、键帽、完整模型、壳体
Clone the repository to access the CAD files:
bash
git clone https://github.com/Keychron/Keychron-Keyboards-Hardware-Design.git
cd Keychron-Keyboards-Hardware-Design
Files are organized by series and model in dedicated folders. For example:
Q-Series/Q1/
K-Pro-Series/K8-Pro/
Q-Max-Series/Q6-Max/
Mice/M1/
克隆仓库以获取CAD文件:
bash
git clone https://github.com/Keychron/Keychron-Keyboards-Hardware-Design.git
cd Keychron-Keyboards-Hardware-Design
文件按系列和型号存放在专属文件夹中,示例如下:
Q-Series/Q1/
K-Pro-Series/K8-Pro/
Q-Max-Series/Q6-Max/
Mice/M1/
Major Series Categories
主要系列分类
C-Pro-8K-Series/ # Wired keyboards (C1, C2, C3 Pro 8K)
Q-Series/ # Flagship mechanical (Q0-Q12, Q60, Q65)
Q-Pro-Series/ # Wireless Q variants (Q1-Q14 Pro)
Q-HE-Series/ # Hall Effect models (Q0-Q12 HE)
Q-HE-8K-Series/ # 8K polling Hall Effect (Q1-Q16 HE 8K)
Q-Max-Series/ # Premium Q series (Q0-Q15 Max)
Q-Ultra-8K-Series/ # Ultra series (Q1, Q3, Q5, Q6, Q13 Ultra 8K)
K-Pro-Series/ # K Pro keyboards (K1-K17 Pro)
K-Max-Series/ # K Max keyboards (K0-K17 Max)
K-HE-Series/ # K Hall Effect (K2, K4, K6, K8, K10 HE)
K-QMK-Series/ # QMK firmware models (K1-K10 QMK)
L-Series/ # Aluminum keyboards (L1, L3)
V-8K-Series/ # V series 8K polling (V1, V3, V5, V6)
V-Ultra-8K-Series/ # V Ultra series (V0, V1, V3, V5, V6, V10)
V-Max-Series/ # V Max series (V1-V10 Max)
P-HE-Series/ # Lemokey Hall Effect (P1-P3 HE)
Mice/ # Mouse models (M1-M7, G1-G2)
Keycap-Profiles/ # Cherry, KSA, LSA, MDA, OEM, OSA
C-Pro-8K-Series/ # 有线键盘(C1、C2、C3 Pro 8K)
Q-Series/ # 旗舰机械键盘(Q0-Q12、Q60、Q65)
Q-Pro-Series/ # Q系列无线版本(Q1-Q14 Pro)
Q-HE-Series/ # 霍尔效应型号(Q0-Q12 HE)
Q-HE-8K-Series/ # 8K polling霍尔效应型号(Q1-Q16 HE 8K)
Q-Max-Series/ # 高端Q系列(Q0-Q15 Max)
Q-Ultra-8K-Series/ # Ultra系列(Q1、Q3、Q5、Q6、Q13 Ultra 8K)
K-Pro-Series/ # K Pro系列键盘(K1-K17 Pro)
K-Max-Series/ # K Max系列键盘(K0-K17 Max)
K-HE-Series/ # K系列霍尔效应型号(K2、K4、K6、K8、K10 HE)
K-QMK-Series/ # 搭载QMK固件的型号(K1-K10 QMK)
L-Series/ # 铝合金键盘(L1、L3)
V-8K-Series/ # V系列8K polling型号(V1、V3、V5、V6)
V-Ultra-8K-Series/ # V Ultra系列(V0、V1、V3、V5、V6、V10)
V-Max-Series/ # V Max系列(V1-V10 Max)
P-HE-Series/ # Lemokey霍尔效应型号(P1-P3 HE)
Mice/ # 鼠标型号(M1-M7、G1-G2)
Keycap-Profiles/ # Cherry、KSA、LSA、MDA、OEM、OSA键帽轮廓
STEP Files (.stp)
STEP文件(.stp)
Primary 3D CAD format for mechanical design. Compatible with:
- FreeCAD (Open source)
- Fusion 360 (Autodesk)
- SolidWorks
- Onshape
- Rhino
Opening a STEP file in FreeCAD:
机械设计的核心3D CAD格式,兼容以下软件:
- FreeCAD(开源)
- Fusion 360(Autodesk)
- SolidWorks
- Onshape
- Rhino
在FreeCAD中打开STEP文件:
Ubuntu/Debian
Ubuntu/Debian
brew install --cask freecad
brew install --cask freecad
freecad K-Pro-Series/K8-Pro/K8-Pro-Case.stp
freecad K-Pro-Series/K8-Pro/K8-Pro-Case.stp
2D CAD formats for plate designs and dimensional drawings. Compatible with:
- LibreCAD (Open source)
- QCAD
- AutoCAD
- DraftSight
Opening DXF in LibreCAD:
用于定位板设计和尺寸图纸的2D CAD格式,兼容以下软件:
- LibreCAD(开源)
- QCAD
- AutoCAD
- DraftSight
在LibreCAD中打开DXF文件:
Install LibreCAD
安装LibreCAD
sudo apt install librecad
sudo apt install librecad
librecad Q-Series/Q1/Q1-Plate.dxf
librecad Q-Series/Q1/Q1-Plate.dxf
Reference documentation and dimensional drawings viewable in any PDF reader.
1. Inspecting Keyboard Dimensions
1. 检查键盘尺寸
To check dimensions for a Q1 Pro case:
Navigate to model folder
进入型号文件夹
List available files
列出可用文件
Expected: Q1-Pro-Case.stp, Q1-Pro-Plate.stp, Q1-Pro-Full-Model.stp
预期文件:Q1-Pro-Case.stp、Q1-Pro-Plate.stp、Q1-Pro-Full-Model.stp
Open in FreeCAD to measure
在FreeCAD中打开以测量
freecad Q1-Pro-Case.stp
In FreeCAD:
1. Select **Measure** → **Distance**
2. Click two points to measure
3. View dimensions in property panel
freecad Q1-Pro-Case.stp
在FreeCAD中:
1. 选择**测量** → **距离**
2. 点击两个点进行测量
3. 在属性面板中查看尺寸
2. Designing a Compatible Plate Modification
2. 设计兼容的定位板改装件
Example: Adding extra mounting holes to a K8 Pro plate.
Python script using FreeCAD API
使用FreeCAD API的Python脚本
import FreeCAD
import Part
import FreeCAD
import Part
Load original plate
加载原始定位板
doc = FreeCAD.open("K-Pro-Series/K8-Pro/K8-Pro-Plate.stp")
plate = doc.Objects[0]
doc = FreeCAD.open("K-Pro-Series/K8-Pro/K8-Pro-Plate.stp")
plate = doc.Objects[0]
Add mounting holes at specific coordinates
在指定坐标添加安装孔
hole_diameter = 3.0 # mm
hole_positions = [
(10, 10, 0),
(350, 10, 0),
(10, 120, 0),
(350, 120, 0)
]
for pos in hole_positions:
cylinder = Part.makeCylinder(hole_diameter / 2, 5, FreeCAD.Vector(*pos))
plate.Shape = plate.Shape.cut(cylinder)
hole_diameter = 3.0 # 毫米
hole_positions = [
(10, 10, 0),
(350, 10, 0),
(10, 120, 0),
(350, 120, 0)
]
for pos in hole_positions:
cylinder = Part.makeCylinder(hole_diameter / 2, 5, FreeCAD.Vector(*pos))
plate.Shape = plate.Shape.cut(cylinder)
Export modified plate
导出修改后的定位板
plate.Shape.exportStep("K8-Pro-Plate-Modified.stp")
doc.saveAs("K8-Pro-Plate-Modified.FCStd")
plate.Shape.exportStep("K8-Pro-Plate-Modified.stp")
doc.saveAs("K8-Pro-Plate-Modified.FCStd")
3. Creating a Custom Case Add-on
3. 定制外壳附加件
Example: Designing a magnetic feet attachment for Q6 Max.
FreeCAD Python console script
FreeCAD Python控制台脚本
import FreeCAD
import Part
import FreeCAD
import Part
Load Q6 Max case
加载Q6 Max外壳
doc = FreeCAD.open("Q-Max-Series/Q6-Max/Q6-Max-Case.stp")
case = doc.Objects[0]
doc = FreeCAD.open("Q-Max-Series/Q6-Max/Q6-Max-Case.stp")
case = doc.Objects[0]
Get case bottom dimensions
获取外壳底部尺寸
bbox = case.Shape.BoundBox
width = bbox.XLength
depth = bbox.YLength
bbox = case.Shape.BoundBox
width = bbox.XLength
depth = bbox.YLength
Create magnetic feet holder (4 corners)
创建磁吸脚垫支架(4个角落)
feet_diameter = 10 # mm
feet_height = 3 # mm
inset = 15 # mm from edges
feet_positions = [
(inset, inset),
(width - inset, inset),
(inset, depth - inset),
(width - inset, depth - inset)
]
feet_parts = []
for x, y in feet_positions:
foot = Part.makeCylinder(feet_diameter / 2, feet_height, FreeCAD.Vector(x, y, -feet_height))
feet_parts.append(foot)
feet_diameter = 10 # 毫米
feet_height = 3 # 毫米
inset = 15 # 距离边缘的毫米数
feet_positions = [
(inset, inset),
(width - inset, inset),
(inset, depth - inset),
(width - inset, depth - inset)
]
feet_parts = []
for x, y in feet_positions:
foot = Part.makeCylinder(feet_diameter / 2, feet_height, FreeCAD.Vector(x, y, -feet_height))
feet_parts.append(foot)
feet_holder = feet_parts[0]
for foot in feet_parts[1:]:
feet_holder = feet_holder.fuse(foot)
feet_holder = feet_parts[0]
for foot in feet_parts[1:]:
feet_holder = feet_holder.fuse(foot)
Export for 3D printing
导出用于3D打印
feet_holder.exportStl("Q6-Max-Magnetic-Feet.stl")
feet_holder.exportStl("Q6-Max-Magnetic-Feet.stl")
4. Extracting Plate DXF for Laser Cutting
4. 提取定位板DXF文件用于激光切割
Navigate to desired model
进入目标型号文件夹
Verify DXF exists
验证DXF文件是否存在
Open in LibreCAD to verify dimensions
在LibreCAD中打开以验证尺寸
Export with correct units for laser cutting service
导出适合激光切割服务的正确单位文件
In LibreCAD: File > Export > DXF
在LibreCAD中:文件 > 导出 > DXF
Set units to millimeters
设置单位为毫米
Set version to R12/LT2 for maximum compatibility
设置版本为R12/LT2以获得最大兼容性
5. Converting STEP to STL for 3D Printing
5. 将STEP转换为STL用于3D打印
Using FreeCAD command line:
Convert K2 HE case to STL
将K2 HE外壳转换为STL
freecad -c << EOF
import FreeCAD
import Mesh
doc = FreeCAD.open("K-HE-Series/K2-HE/K2-HE-Case.stp")
obj = doc.Objects[0]
freecad -c << EOF
import FreeCAD
import Mesh
doc = FreeCAD.open("K-HE-Series/K2-HE/K2-HE-Case.stp")
obj = doc.Objects[0]
Export with reasonable resolution
以合理分辨率导出
Mesh.export([obj], "K2-HE-Case.stl")
EOF
Or using Python script:
```python
import FreeCAD
import Mesh
import sys
input_file = sys.argv[1] # "K2-HE-Case.stp"
output_file = sys.argv[2] # "K2-HE-Case.stl"
doc = FreeCAD.open(input_file)
shape = doc.Objects[0]
Mesh.export([obj], "K2-HE-Case.stl")
EOF
或使用Python脚本:
```python
import FreeCAD
import Mesh
import sys
input_file = sys.argv[1] # "K2-HE-Case.stp"
output_file = sys.argv[2] # "K2-HE-Case.stl"
doc = FreeCAD.open(input_file)
shape = doc.Objects[0]
Higher mesh deviation = smoother surface
偏差值越小,网格越平滑(0.01为高质量)
mesh = shape.Shape.tessellate(0.01)
Mesh.Mesh(mesh[0], mesh[1]).write(output_file)
mesh = shape.Shape.tessellate(0.01)
Mesh.Mesh(mesh[0], mesh[1]).write(output_file)
6. Batch Processing Multiple Models
6. 批量处理多个模型
Extract all plate files from Q Series:
Find all STEP plate files in Q-Series
在Q系列中查找所有STEP格式的定位板文件
find Q-Series -name "*Plate.stp" -type f > plate_files.txt
find Q-Series -name "*Plate.stp" -type f > plate_files.txt
Convert each to STL
将每个文件转换为STL
while IFS= read -r file; do
base=$(basename "$file" .stp)
dir=$(dirname "$file")
echo "Converting $file..."
freecad -c << EOF
import FreeCAD
import Mesh
doc = FreeCAD.open("$file")
obj = doc.Objects[0]
Mesh.export([obj], "$dir/${base}.stl")
EOF
done < plate_files.txt
while IFS= read -r file; do
base=$(basename "$file" .stp)
dir=$(dirname "$file")
echo "正在转换 $file..."
freecad -c << EOF
import FreeCAD
import Mesh
doc = FreeCAD.open("$file")
obj = doc.Objects[0]
Mesh.export([obj], "$dir/${base}.stl")
EOF
done < plate_files.txt
Working with Keycap Profiles
键帽轮廓使用说明
The repository includes reference keycap profiles:
Available profiles
可用的键帽轮廓
Cherry-Profile/
Cherry-Profile/
Load a keycap profile for custom keycap design:
```python
import FreeCAD
import Part
加载键帽轮廓以进行自定义键帽设计:
```python
import FreeCAD
import Part
Load OSA profile reference
加载OSA轮廓参考文件
doc = FreeCAD.open("Keycap-Profiles/OSA-Profile/OSA-R1-1u.stp")
keycap = doc.Objects[0]
doc = FreeCAD.open("Keycap-Profiles/OSA-Profile/OSA-R1-1u.stp")
keycap = doc.Objects[0]
Clone and modify for custom legend
克隆并修改以添加自定义字符
custom = keycap.Shape.copy()
custom = keycap.Shape.copy()
Add custom text engraving (simplified example)
添加自定义文字雕刻(简化示例)
text_height = 1.0 # mm deep
text_height = 1.0 # 深度:毫米
... perform boolean cut operation for legend
... 执行布尔切割操作添加字符
Configuration & Best Practices
配置与最佳实践
Recommended local structure
推荐的本地文件结构
keychron-mods/
├── original/ # Clone of official repo
├── modified/ # Your modifications
│ ├── plates/
│ ├── cases/
│ └── accessories/
├── exports/ # STL/DXF exports for production
└── scripts/ # Automation scripts
keychron-mods/
├── original/ # 官方仓库的克隆版本
├── modified/ # 您的修改文件
│ ├── plates/
│ ├── cases/
│ └── accessories/
├── exports/ # 用于生产的STL/DXF导出文件
└── scripts/ # 自动化脚本
CAD Software Settings
CAD软件设置
FreeCAD Preferences:
- Units: Millimeters (default for Keychron files)
- Grid spacing: 1mm
- Snap to grid: Enabled for precision
Fusion 360 Import:
- File format: STEP AP214
- Unit: mm (auto-detected)
- Stitching tolerance: 0.001 mm
FreeCAD偏好设置:
- 单位:毫米(Keychron文件默认单位)
- 网格间距:1毫米
- 启用网格吸附以保证精度
Fusion 360导入设置:
- 文件格式:STEP AP214
- 单位:毫米(自动检测)
- 拼接公差:0.001毫米
3D Printing Guidelines
3D打印指南
For printing keyboard parts from this repository:
Recommended PLA/PETG settings
推荐的PLA/PETG打印设置
layer_height: 0.2mm
wall_thickness: 1.2mm (3 walls)
infill: 20-30%
supports: Usually required for cases
bed_adhesion: Brim for large flat parts
orientation: Mounting face down for plates
Example Cura profile snippet:
```python
layer_height: 0.2mm
wall_thickness: 1.2mm (3层壁厚)
infill: 20-30%
supports: 外壳通常需要支撑
bed_adhesion: 大型扁平部件使用裙边
orientation: 定位板以安装面朝下摆放
cura_keychron_profile.py
cura_keychron_profile.py
settings = {
'layer_height': 0.2,
'wall_thickness': 1.2,
'top_bottom_thickness': 1.0,
'infill_sparse_density': 25,
'support_enable': True,
'support_type': 'buildplate',
'adhesion_type': 'brim',
'brim_width': 5
}
settings = {
'layer_height': 0.2,
'wall_thickness': 1.2,
'top_bottom_thickness': 1.0,
'infill_sparse_density': 25,
'support_enable': True,
'support_type': 'buildplate',
'adhesion_type': 'brim',
'brim_width': 5
}
Measurement & Validation
测量与验证
Validating Plate Tolerances
验证定位板公差
python
import FreeCAD
import Part
python
import FreeCAD
import Part
Load plate and switch reference
加载定位板和开关参考文件
plate = FreeCAD.open("Q-Series/Q1/Q1-Plate.stp").Objects[0]
plate = FreeCAD.open("Q-Series/Q1/Q1-Plate.stp").Objects[0]
Cherry MX switch cutout should be 14mm x 14mm
Cherry MX开关开孔应为14mm x 14mm
Measure actual cutout dimensions
测量实际开孔尺寸
def measure_switch_cutout(plate_shape):
# Find rectangular faces on top surface
faces = [f for f in plate_shape.Faces if f.Area > 180 and f.Area < 200]
for face in faces:
bbox = face.BoundBox
width = bbox.XLength
height = bbox.YLength
if 13.8 <= width <= 14.2 and 13.8 <= height <= 14.2:
print(f"Switch cutout: {width:.2f}mm x {height:.2f}mm")
return True
print("Warning: Standard switch cutout not found")
return False
measure_switch_cutout(plate.Shape)
def measure_switch_cutout(plate_shape):
# 查找顶面的矩形面
faces = [f for f in plate_shape.Faces if f.Area > 180 and f.Area < 200]
for face in faces:
bbox = face.BoundBox
width = bbox.XLength
height = bbox.YLength
if 13.8 <= width <= 14.2 and 13.8 <= height <= 14.2:
print(f"开关开孔尺寸: {width:.2f}mm x {height:.2f}mm")
return True
print("警告:未找到标准开关开孔")
return False
measure_switch_cutout(plate.Shape)
Common Issues & Troubleshooting
常见问题与故障排除
Issue: STEP file won't open
问题:STEP文件无法打开
Verify file integrity
验证文件完整性
file K-Pro-Series/K8-Pro/K8-Pro-Case.stp
file K-Pro-Series/K8-Pro/K8-Pro-Case.stp
Expected: "K8-Pro-Case.stp: ISO-10303 STEP data"
预期输出:"K8-Pro-Case.stp: ISO-10303 STEP data"
Try converting with Open CASCADE
尝试使用Open CASCADE转换
STEPFILE="K8-Pro-Case.stp"
python3 << EOF
import OCC.Core.STEPControl as STEP
reader = STEP.STEPControl_Reader()
status = reader.ReadFile("$STEPFILE")
if status == 1:
print("File valid")
else:
print("File corrupted or invalid")
EOF
STEPFILE="K8-Pro-Case.stp"
python3 << EOF
import OCC.Core.STEPControl as STEP
reader = STEP.STEPControl_Reader()
status = reader.ReadFile("$STEPFILE")
if status == 1:
print("文件有效")
else:
print("文件损坏或无效")
EOF
Issue: Units appear incorrect
问题:单位显示错误
All Keychron files are in millimeters. If dimensions appear wrong:
所有Keychron文件均使用毫米单位。如果尺寸显示错误:
FreeCAD unit conversion
FreeCAD单位转换
import FreeCAD
doc = FreeCAD.open("Q1-Case.stp")
obj = doc.Objects[0]
import FreeCAD
doc = FreeCAD.open("Q1-Case.stp")
obj = doc.Objects[0]
Check bounding box in mm
以毫米为单位检查边界框
bbox = obj.Shape.BoundBox
print(f"Width: {bbox.XLength}mm")
print(f"Depth: {bbox.YLength}mm")
print(f"Height: {bbox.ZLength}mm")
bbox = obj.Shape.BoundBox
print(f"宽度: {bbox.XLength}mm")
print(f"深度: {bbox.YLength}mm")
print(f"高度: {bbox.ZLength}mm")
Expected for Q1: ~360mm x ~140mm x ~30mm
Q1预期尺寸:约360mm x 140mm x 30mm
Issue: Missing files for specific model
问题:特定型号文件缺失
Check the model's README for download links:
Each model folder contains a README with download links
每个型号文件夹都包含带有下载链接的README文件
cat Q-Max-Series/Q6-Max/README.md
cat Q-Max-Series/Q6-Max/README.md
Look for "Downloads" section
查找"Downloads"章节
Many models have placeholder folders with README/product pages but CAD files are uploaded incrementally. Check repository updates.
许多型号的文件夹为占位符,包含README/产品页面,但CAD文件会逐步上传,请关注仓库更新。
Issue: Exported STL has gaps or errors
问题:导出的STL存在间隙或错误
Increase mesh resolution:
python
import FreeCAD
import Mesh
doc = FreeCAD.open("source.stp")
obj = doc.Objects[0]
提高网格分辨率:
python
import FreeCAD
import Mesh
doc = FreeCAD.open("source.stp")
obj = doc.Objects[0]
Lower deviation = smoother mesh (0.01 is high quality)
偏差值越小,网格越平滑(0.01为高质量)
mesh = obj.Shape.tessellate(0.01)
Mesh.Mesh(mesh[0], mesh[1]).write("output-high-res.stl")
mesh = obj.Shape.tessellate(0.01)
Mesh.Mesh(mesh[0], mesh[1]).write("output-high-res.stl")
License Compliance
许可证合规说明
Allowed:
- Personal use and modifications
- Educational projects
- Creating original compatible accessories
- Studying and remixing designs
- 3D printing parts for personal keyboards
Not Allowed:
- Copying and selling Keychron keyboards/mice
- Using Keychron trademarks as your own brand
- Mass manufacturing clones for commercial sale
Gray Area (Original Accessories ARE Allowed):
The license explicitly states: "Original compatible accessories and add-ons are not subject to the commercial-use restriction."
This means you CAN sell:
- Custom plates that fit Keychron cases
- Aftermarket cases for Keychron PCBs
- Mounting brackets and stands
- Cable management solutions
- Foam inserts and dampeners
允许的行为:
- 个人使用与改装
- 教育项目
- 创建原创兼容配件
- 研究与重新设计
- 为个人键盘3D打印部件
禁止的行为:
- 复制并销售Keychron键盘/鼠标
- 将Keychron商标用作自有品牌
- 大规模制造仿制品用于商业销售
灰色区域(原创配件允许商用):
许可证明确规定:"原创兼容配件和附加件不受商用限制。"
这意味着您可以销售:
- 适配Keychron外壳的定制定位板
- 适配Keychron PCB的售后外壳
- 安装支架与底座
- 线缆管理配件
- 泡棉内衬与减震件
Contributing Modifications
贡献改装方案
If you improve dimensions or fix issues:
Fork the repository
Fork仓库
gh repo fork Keychron/Keychron-Keyboards-Hardware-Design
gh repo fork Keychron/Keychron-Keyboards-Hardware-Design
Create feature branch
创建功能分支
git checkout -b fix/q1-plate-tolerance
git checkout -b fix/q1-plate-tolerance
Make changes to STEP files
修改STEP文件
Use FreeCAD or other CAD software
使用FreeCAD或其他CAD软件
Export corrected version
导出修正后的版本
Include both STEP and source format (.FCStd for FreeCAD)
同时包含STEP和源格式文件(FreeCAD为.FCStd)
Commit with descriptive message
提交并添加描述性信息
git add Q-Series/Q1/Q1-Plate.stp
git add Q-Series/Q1/Q1-Plate.FCStd
git commit -m "Fix Q1 plate switch cutout tolerance to 14.0mm ±0.05mm"
git add Q-Series/Q1/Q1-Plate.stp
git add Q-Series/Q1/Q1-Plate.FCStd
git commit -m "Fix Q1 plate switch cutout tolerance to 14.0mm ±0.05mm"
Push and create PR
推送并创建PR
git push origin fix/q1-plate-tolerance
gh pr create --title "Fix Q1 plate switch cutout tolerance"
git push origin fix/q1-plate-tolerance
gh pr create --title "Fix Q1 plate switch cutout tolerance"
- Documentation:
docs/file-format-guide.md
,
- 3D Printing Guide:
docs/3d-printing-guide.md
- Contributing:
- Discord: https://discord.com/invite/HAYbRrTsjN
- Keychron Homepage: https://www.keychron.com/
This skill enables comprehensive support for users working with Keychron's hardware design files for modification, accessory creation, and education.