Skip to content

Commit d47b091

Browse files
authored
Merge pull request #917 from remap-keys/feature/workbench-config-h-form-editor
feat: Add Form Editor for config.h with QMK define settings
2 parents 99eb3ed + 54e534b commit d47b091

5 files changed

Lines changed: 1265 additions & 2 deletions

File tree

src/assets/locales/ja.json

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -492,5 +492,45 @@
492492
"Could not parse keyboard.json layout.": "keyboard.json のレイアウトを解析できませんでした。",
493493
"Could not parse keymap.c file.": "keymap.c ファイルを解析できませんでした。",
494494
"Please use the Code Editor to fix syntax errors.": "コードエディタを使用して構文エラーを修正してください。",
495-
"\"{{name}}\" is a custom keycode defined in the source code. It cannot be edited in the Visual Editor.": "\"{{name}}\" はソースコード内で定義されたカスタムキーコードです。ビジュアルエディタでは編集できません。"
495+
"\"{{name}}\" is a custom keycode defined in the source code. It cannot be edited in the Visual Editor.": "\"{{name}}\" はソースコード内で定義されたカスタムキーコードです。ビジュアルエディタでは編集できません。",
496+
"Could not parse config.h.": "config.h を解析できませんでした。",
497+
"Tap/Hold": "タップ/ホールド",
498+
"Mouse Keys": "マウスキー",
499+
"Combo": "コンボ",
500+
"Auto Shift": "自動シフト",
501+
"One Shot": "ワンショット",
502+
"Leader Key": "リーダーキー",
503+
"Wheel": "ホイール",
504+
"Time in ms to distinguish tap from hold (default: 200)": "タップとホールドを区別する時間(ミリ秒、デフォルト: 200)",
505+
"Time in ms for quick tap after tap-hold (default: TAPPING_TERM)": "タップホールド後のクイックタップ時間(ミリ秒、デフォルト: TAPPING_TERM)",
506+
"Time in ms for combo key detection (default: 50)": "コンボキー検出時間(ミリ秒、デフォルト: 50)",
507+
"Time in ms for auto shift activation (default: 175)": "自動シフト発動時間(ミリ秒、デフォルト: 175)",
508+
"Time in ms before one-shot key expires (default: 5000)": "ワンショットキーの有効時間(ミリ秒、デフォルト: 5000)",
509+
"Number of taps to toggle one-shot key (default: 5)": "ワンショットキーをトグルするタップ回数(デフォルト: 5)",
510+
"Time in ms for leader key sequence (default: 300)": "リーダーキーシーケンスの時間(ミリ秒、デフォルト: 300)",
511+
"Enable per-key tapping term via callback": "コールバックでキーごとのタッピングタームを有効にする",
512+
"Trigger hold if another key is pressed and released while held": "ホールド中に別のキーが押されて離されたらホールドを発動する",
513+
"Enable per-key permissive hold via callback": "コールバックでキーごとのパーミッシブホールドを有効にする",
514+
"Trigger hold immediately when another key is pressed": "別のキーが押された時点で即座にホールドを発動する",
515+
"Enable per-key hold on other key press via callback": "コールバックでキーごとの他キー押下時ホールドを有効にする",
516+
"Enable per-key quick tap term via callback": "コールバックでキーごとのクイックタップタームを有効にする",
517+
"Send tap keycode if no other key was pressed during hold": "ホールド中に他のキーが押されなければタップキーコードを送信する",
518+
"Enable per-key retro tapping via callback": "コールバックでキーごとのレトロタッピングを有効にする",
519+
"Require modifier combos to be held to activate": "修飾キーコンボの発動にホールドを必要とする",
520+
"Apply auto shift even when modifiers are held": "修飾キーが押されていても自動シフトを適用する",
521+
"Disable auto shift for special keys (e.g. -=[] etc.)": "特殊キー(-=[]など)の自動シフトを無効にする",
522+
"Disable auto shift for number keys (0-9)": "数字キー(0-9)の自動シフトを無効にする",
523+
"Disable auto shift for letter keys (A-Z)": "文字キー(A-Z)の自動シフトを無効にする",
524+
"Reset timeout after each key in leader sequence": "リーダーシーケンスの各キー入力後にタイムアウトをリセットする",
525+
"Disable leader key timeout (wait indefinitely for sequence)": "リーダーキーのタイムアウトを無効にする(入力を無制限に待つ)",
526+
"Delay before mouse movement starts in ms (default: 10)": "マウス移動開始までの遅延(ミリ秒、デフォルト: 10)",
527+
"Time between mouse movement steps in ms (default: 20)": "マウス移動ステップ間の時間(ミリ秒、デフォルト: 20)",
528+
"Maximum cursor speed (default: 10)": "カーソルの最大速度(デフォルト: 10)",
529+
"Time to reach max speed in steps (default: 30)": "最大速度に到達するまでのステップ数(デフォルト: 30)",
530+
"Delay before scroll starts in ms (default: 10)": "スクロール開始までの遅延(ミリ秒、デフォルト: 10)",
531+
"Time between scroll steps in ms (default: 80)": "スクロールステップ間の時間(ミリ秒、デフォルト: 80)",
532+
"Maximum scroll speed (default: 8)": "スクロールの最大速度(デフォルト: 8)",
533+
"Time to reach max scroll speed in steps (default: 40)": "最大スクロール速度に到達するまでのステップ数(デフォルト: 40)",
534+
"Time in ms to hold combo for hold behavior (default: 150)": "コンボのホールド動作に必要な保持時間(ミリ秒、デフォルト: 150)",
535+
"Only trigger combos from this layer number": "このレイヤー番号からのみコンボを発動する"
496536
}

src/components/workbench/breadboard/Breadboard.tsx

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ import { t } from 'i18next';
5151
import { useUserPurchaseHook } from './UserPurchaseHook';
5252
import { KeyboardLayoutPanel } from '../dialogs/LayoutPreviewDialog';
5353
import { KeyboardJsonSettingsPanel } from '../dialogs/KeyboardJsonEditorDialog';
54+
import { ConfigHSettingsPanel } from '../dialogs/ConfigHSettingsPanel';
5455
import VisualKeymapEditor from '../visualeditor/VisualKeymapEditor';
5556

5657
type OwnProps = {};
@@ -539,7 +540,10 @@ function EditorWithVisualTab(props: EditorWithVisualTabProps) {
539540
props.selectedFile?.fileType === 'keyboard' &&
540541
file?.path === 'keyboard.json';
541542

542-
const hasTabs = isKeymapCFile || isKeyboardJsonFile;
543+
const isConfigHFile =
544+
props.selectedFile?.fileType === 'keyboard' && file?.path === 'config.h';
545+
546+
const hasTabs = isKeymapCFile || isKeyboardJsonFile || isConfigHFile;
543547

544548
const keyboardJsonCode = useMemo(() => {
545549
if (!props.project) return undefined;
@@ -660,6 +664,12 @@ function EditorWithVisualTab(props: EditorWithVisualTabProps) {
660664
sx={{ minHeight: 32, py: 0.5, textTransform: 'none' }}
661665
/>
662666
)}
667+
{isConfigHFile && (
668+
<Tab
669+
label={t('Form Editor')}
670+
sx={{ minHeight: 32, py: 0.5, textTransform: 'none' }}
671+
/>
672+
)}
663673
</Tabs>
664674
{editorTab === 0 && fontSizeControls}
665675
</Box>
@@ -701,6 +711,12 @@ function EditorWithVisualTab(props: EditorWithVisualTabProps) {
701711
onChange={handleVisualEditorCodeChange}
702712
/>
703713
)}
714+
{isConfigHFile && editorTab === 1 && (
715+
<ConfigHSettingsPanel
716+
configHContent={effectiveCode}
717+
onChange={handleVisualEditorCodeChange}
718+
/>
719+
)}
704720
</>
705721
);
706722
}

0 commit comments

Comments
 (0)