keychron-hardware-design
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseKeychron 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.
由ara.so提供的技能——设计技能合集。
该技能可让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系列鼠标。
Project Overview
项目概述
Repository:
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-DesignStars: 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
仓库地址:
星标数: 3376(日均80个星标)
许可证: 源码可用(个人/教育用途;原创兼容配件不受商用限制)
文件类型: STEP(.stp)、DXF、DWG、PDF
组件分类: 外壳、定位板、编码器、卫星轴、键帽、完整模型、壳体
Keychron/Keychron-Keyboards-Hardware-Design星标数: 3376(日均80个星标)
许可证: 源码可用(个人/教育用途;原创兼容配件不受商用限制)
文件类型: STEP(.stp)、DXF、DWG、PDF
组件分类: 外壳、定位板、编码器、卫星轴、键帽、完整模型、壳体
Installation
安装步骤
Clone the repository to access the CAD files:
bash
git clone https://github.com/Keychron/Keychron-Keyboards-Hardware-Design.git
cd Keychron-Keyboards-Hardware-DesignFiles 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/Repository Structure
仓库结构
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, OSAC-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键帽轮廓File Format Guide
文件格式指南
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:
bash
undefined机械设计的核心3D CAD格式,兼容以下软件:
- FreeCAD(开源)
- Fusion 360(Autodesk)
- SolidWorks
- Onshape
- Rhino
在FreeCAD中打开STEP文件:
bash
undefinedInstall FreeCAD
安装FreeCAD
Ubuntu/Debian
Ubuntu/Debian
sudo apt install freecad
sudo apt install freecad
macOS
macOS
brew install --cask freecad
brew install --cask freecad
Open file
打开文件
freecad K-Pro-Series/K8-Pro/K8-Pro-Case.stp
undefinedfreecad K-Pro-Series/K8-Pro/K8-Pro-Case.stp
undefinedDXF/DWG Files
DXF/DWG文件
2D CAD formats for plate designs and dimensional drawings. Compatible with:
- LibreCAD (Open source)
- QCAD
- AutoCAD
- DraftSight
Opening DXF in LibreCAD:
bash
undefined用于定位板设计和尺寸图纸的2D CAD格式,兼容以下软件:
- LibreCAD(开源)
- QCAD
- AutoCAD
- DraftSight
在LibreCAD中打开DXF文件:
bash
undefinedInstall LibreCAD
安装LibreCAD
sudo apt install librecad
sudo apt install librecad
Open file
打开文件
librecad Q-Series/Q1/Q1-Plate.dxf
undefinedlibrecad Q-Series/Q1/Q1-Plate.dxf
undefinedPDF Files
PDF文件
Reference documentation and dimensional drawings viewable in any PDF reader.
参考文档和尺寸图纸,可在任意PDF阅读器中查看。
Common Workflows
常见工作流程
1. Inspecting Keyboard Dimensions
1. 检查键盘尺寸
To check dimensions for a Q1 Pro case:
bash
undefined检查Q1 Pro外壳的尺寸:
bash
undefinedNavigate to model folder
进入型号文件夹
cd Q-Pro-Series/Q1-Pro/
cd Q-Pro-Series/Q1-Pro/
List available files
列出可用文件
ls -lh
ls -lh
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 panelfreecad 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
undefined示例:为K8 Pro定位板添加额外安装孔。
python
undefinedPython 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")
undefinedplate.Shape.exportStep("K8-Pro-Plate-Modified.stp")
doc.saveAs("K8-Pro-Plate-Modified.FCStd")
undefined3. Creating a Custom Case Add-on
3. 定制外壳附加件
Example: Designing a magnetic feet attachment for Q6 Max.
python
undefined示例:为Q6 Max设计磁吸脚垫附件。
python
undefinedFreeCAD 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)
Combine all feet
合并所有脚垫
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")
undefinedfeet_holder.exportStl("Q6-Max-Magnetic-Feet.stl")
undefined4. Extracting Plate DXF for Laser Cutting
4. 提取定位板DXF文件用于激光切割
bash
undefinedbash
undefinedNavigate to desired model
进入目标型号文件夹
cd Q-Series/Q3/
cd Q-Series/Q3/
Verify DXF exists
验证DXF文件是否存在
ls *.dxf
ls *.dxf
Q3-Plate.dxf
Q3-Plate.dxf
Open in LibreCAD to verify dimensions
在LibreCAD中打开以验证尺寸
librecad Q3-Plate.dxf
librecad Q3-Plate.dxf
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以获得最大兼容性
undefinedundefined5. Converting STEP to STL for 3D Printing
5. 将STEP转换为STL用于3D打印
Using FreeCAD command line:
bash
undefined使用FreeCAD命令行:
bash
undefinedConvert 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)
undefinedmesh = shape.Shape.tessellate(0.01)
Mesh.Mesh(mesh[0], mesh[1]).write(output_file)
undefined6. Batch Processing Multiple Models
6. 批量处理多个模型
Extract all plate files from Q Series:
bash
#!/bin/bash提取Q系列的所有定位板文件:
bash
#!/bin/bashFind 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 << EOFimport FreeCAD
import Mesh
doc = FreeCAD.open("$file")
obj = doc.Objects[0]
Mesh.export([obj], "$dir/${base}.stl")
EOF
done < plate_files.txt
undefinedwhile IFS= read -r file; do
base=$(basename "$file" .stp)
dir=$(dirname "$file")
echo "正在转换 $file..."
freecad -c << EOFimport FreeCAD
import Mesh
doc = FreeCAD.open("$file")
obj = doc.Objects[0]
Mesh.export([obj], "$dir/${base}.stl")
EOF
done < plate_files.txt
undefinedWorking with Keycap Profiles
键帽轮廓使用说明
The repository includes reference keycap profiles:
bash
cd Keycap-Profiles仓库包含以下参考键帽轮廓:
bash
cd Keycap-ProfilesAvailable profiles
可用的键帽轮廓
ls -1
ls -1
Cherry-Profile/
Cherry-Profile/
KSA-Profile/
KSA-Profile/
LSA-Profile/
LSA-Profile/
MDA-Profile/
MDA-Profile/
OEM-Profile/
OEM-Profile/
OSA-Profile/
OSA-Profile/
Load a keycap profile for custom keycap design:
```python
import FreeCAD
import Part
加载键帽轮廓以进行自定义键帽设计:
```python
import FreeCAD
import PartLoad 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
... 执行布尔切割操作添加字符
undefinedundefinedConfiguration & Best Practices
配置与最佳实践
File Organization
文件组织
bash
undefinedbash
undefinedRecommended local structure
推荐的本地文件结构
keychron-mods/
├── original/ # Clone of official repo
├── modified/ # Your modifications
│ ├── plates/
│ ├── cases/
│ └── accessories/
├── exports/ # STL/DXF exports for production
└── scripts/ # Automation scripts
undefinedkeychron-mods/
├── original/ # 官方仓库的克隆版本
├── modified/ # 您的修改文件
│ ├── plates/
│ ├── cases/
│ └── accessories/
├── exports/ # 用于生产的STL/DXF导出文件
└── scripts/ # 自动化脚本
undefinedCAD 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:
yaml
undefined打印本仓库中的键盘部件时:
yaml
undefinedRecommended 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:
```pythonlayer_height: 0.2mm
wall_thickness: 1.2mm (3层壁厚)
infill: 20-30%
supports: 外壳通常需要支撑
bed_adhesion: 大型扁平部件使用裙边
orientation: 定位板以安装面朝下摆放
Cura配置文件示例片段:
```pythoncura_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
}
undefinedsettings = {
'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
}
undefinedMeasurement & Validation
测量与验证
Validating Plate Tolerances
验证定位板公差
python
import FreeCAD
import Partpython
import FreeCAD
import PartLoad 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 Falsemeasure_switch_cutout(plate.Shape)
undefineddef 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 Falsemeasure_switch_cutout(plate.Shape)
undefinedCommon Issues & Troubleshooting
常见问题与故障排除
Issue: STEP file won't open
问题:STEP文件无法打开
bash
undefinedbash
undefinedVerify 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
undefinedSTEPFILE="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
undefinedIssue: Units appear incorrect
问题:单位显示错误
All Keychron files are in millimeters. If dimensions appear wrong:
python
undefined所有Keychron文件均使用毫米单位。如果尺寸显示错误:
python
undefinedFreeCAD 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
undefinedundefinedIssue: Missing files for specific model
问题:特定型号文件缺失
Check the model's README for download links:
bash
undefined查看该型号的README文件获取下载链接:
bash
undefinedEach 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")
undefinedmesh = obj.Shape.tessellate(0.01)
Mesh.Mesh(mesh[0], mesh[1]).write("output-high-res.stl")
undefinedLicense 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:
bash
undefined如果您优化了尺寸或修复了问题:
bash
undefinedFork 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"
undefinedgit push origin fix/q1-plate-tolerance
gh pr create --title "Fix Q1 plate switch cutout tolerance"
undefinedAdditional Resources
额外资源
- Documentation: ,
docs/file-format-guide.mddocs/getting-started.md - 3D Printing Guide:
docs/3d-printing-guide.md - Contributing:
docs/CONTRIBUTING.md - 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.
- 文档: 、
docs/file-format-guide.mddocs/getting-started.md - 3D打印指南:
docs/3d-printing-guide.md - 贡献指南:
docs/CONTRIBUTING.md - Discord社区: https://discord.com/invite/HAYbRrTsjN
- Keychron官网: https://www.keychron.com/
该技能为使用Keychron硬件设计文件进行改装、配件创作和学习的用户提供全面支持。