seveibar/keyboard-utils

Based on the code provided, here's a concise summary of the electronic component: A keyboard utility library for parsing and generating keyboard layouts using the Keyboard Layout Editor (KLE) JSON format, with support for generating key matrices, reference designators, and diode routing for keyboard PCBs. Key features: - Parses KLE JSON layouts into key coordinate and metadata objects - Supports various keyboard layouts (60%, ANSI, ISO, Ergodox, etc.) - Generates unique reference designators for keys - Provides utility for adding diode routing in key matrices - TypeScript-based with React and tscircuit integration The library allows keyboard designers to easily convert layout designs into structured, machine-readable keyboard specifications.

Version
0.0.19
License
unset
Stars
3

dist/index.d.ts

PCBPCB preview for dist/index.d.ts
SchematicSchematic preview for dist/index.d.ts
import { ChipProps } from '@tscircuit/props';

type KLEKey = string | {
    x?: number;
    y?: number;
    w?: number;
    h?: number;
    x2?: number;
    y2?: number;
    w2?: number;
    h2?: number;
    r?: number;
    rx?: number;
    ry?: number;
    n?: boolean;
    l?: boolean;
    d?: boolean;
    g?: boolean;
    sm?: string;
    sb?: string;
    st?: string;
    a?: number;
};
type KLELayout = KLEKey[][];
declare const parseKLELayout: (layout: KLELayout) => {
    name: string;
    x: number;
    y: number;
    width: number;
    height: number;
    rotation: number;
    rotationX: number;
    rotationY: number;
    row: number;
    col: number;
}[];

interface KeyMatrixProps {
    layout: KLELayout;
    rowToMicroPin?: string[];
    colToMicroPin?: string[];
    name?: string;
    pcbX?: number;
    pcbY?: number;
    schX?: number;
    schY?: number;
}
declare const KeyMatrix: ({ layout, rowToMicroPin, colToMicroPin, name, pcbX, pcbY, schX, schY, }: KeyMatrixProps) => any;

declare const getRefDesForKey: (key: string) => string;

declare const pinLabels: {
    readonly pin1: readonly ["C"];
    readonly pin2: readonly ["A"];
};
declare const A_1N4148WS: (props: ChipProps<typeof pinLabels>) => any;

declare const layouts: {
    default60: (string | {
        w: number;
        a?: undefined;
    } | {
        a: number;
        w: number;
    })[][];
    ansi104: ((string | {
        y: number;
        w?: undefined;
        x?: undefined;
    } | {
        w: number;
        y?: undefined;
        x?: undefined;
    } | {
        x: number;
        y?: undefined;
        w?: undefined;
    })[] | (string | {
        w: number;
        x?: undefined;
        h?: undefined;
    } | {
        x: number;
        w?: undefined;
        h?: undefined;
    } | {
        h: number;
        w?: undefined;
        x?: undefined;
    })[] | (string | {
        w: number;
        a?: undefined;
        x?: undefined;
    } | {
        a: number;
        w: number;
        x?: undefined;
    } | {
        x: number;
        w?: undefined;
        a?: undefined;
    } | {
        x: number;
        w: number;
        a?: undefined;
    })[])[];
    iso105: ((string | {
        y: number;
        w?: undefined;
        x?: undefined;
    } | {
        w: number;
        y?: undefined;
        x?: undefined;
    } | {
        x: number;
        y?: undefined;
        w?: undefined;
    })[] | (string | {
        w: number;
        x?: undefined;
        h?: undefined;
        w2?: undefined;
        h2?: undefined;
        x2?: undefined;
    } | {
        x: number;
        w: number;
        h: number;
        w2: number;
        h2: number;
        x2: number;
    } | {
        x: number;
        w?: undefined;
        h?: undefined;
        w2?: undefined;
        h2?: undefined;
        x2?: undefined;
    } | {
        h: number;
        w?: undefined;
        x?: undefined;
        w2?: undefined;
        h2?: undefined;
        x2?: undefined;
    })[] | (string | {
        w: number;
        a?: undefined;
        x?: undefined;
    } | {
        a: number;
        w: number;
        x?: undefined;
    } | {
        x: number;
        w?: undefined;
        a?: undefined;
    } | {
        x: number;
        w: number;
        a?: undefined;
    })[])[];
    iso60: ((string | {
        w: number;
        x?: undefined;
        h?: undefined;
        w2?: undefined;
        h2?: undefined;
        x2?: undefined;
    } | {
        x: number;
        w: number;
        h: number;
        w2: number;
        h2: number;
        x2: number;
    })[] | (string | {
        w: number;
        a?: undefined;
    } | {
        a: number;
        w: number;
    })[])[];
    jd40: (string | {
        w: number;
        a?: undefined;
    } | {
        a: number;
        w: number;
    })[][];
    ergodox: ((string | {
        y: number;
        x: number;
        a?: undefined;
    } | {
        a: number;
        y?: undefined;
        x?: undefined;
    } | {
        x: number;
        y?: undefined;
        a?: undefined;
    })[] | (string | {
        y: number;
        a: number;
        w: number;
        x?: undefined;
    } | {
        a: number;
        y?: undefined;
        w?: undefined;
        x?: undefined;
    } | {
        x: number;
        y?: undefined;
        a?: undefined;
        w?: undefined;
    } | {
        a: number;
        w: number;
        y?: undefined;
        x?: undefined;
    })[] | (string | {
        y: number;
        x: number;
        a: number;
    } | {
        x: number;
        y?: undefined;
        a?: undefined;
    })[] | (string | {
        y: number;
        x: number;
        a?: undefined;
        h?: undefined;
    } | {
        a: number;
        h: number;
        y?: undefined;
        x?: undefined;
    } | {
        x: number;
        h: number;
        y?: undefined;
        a?: undefined;
    } | {
        a: number;
        y?: undefined;
        x?: undefined;
        h?: undefined;
    })[] | (string | {
        y: number;
        x: number;
        h: number;
    } | {
        x: number;
        h: number;
        y?: undefined;
    })[] | (string | {
        r: number;
        rx: number;
        ry: number;
        y: number;
        x: number;
    })[] | (string | {
        r: number;
        rx: number;
        y: number;
        x: number;
    })[] | (string | {
        x: number;
        h?: undefined;
    } | {
        h: number;
        x?: undefined;
    })[])[];
    atreus: ((string | {
        r: number;
        rx: number;
        y: number;
        x: number;
    })[] | (string | {
        y: number;
        x: number;
    } | {
        x: number;
        y?: undefined;
    })[] | (string | {
        y: number;
    })[] | (string | {
        y: number;
        x: number;
        h: number;
    })[] | (string | {
        r: number;
        rx: number;
        ry: number;
        y: number;
        x: number;
    })[])[];
    planck: ((string | {
        a: number;
    })[] | (string | {
        w: number;
    })[])[];
    keycool84: (string | {
        a: number;
        w: number;
    } | {
        w: number;
        a?: undefined;
    } | {
        a: number;
        w?: undefined;
    })[][];
    leopold_fc660m: ((string | {
        w: number;
        x?: undefined;
    } | {
        x: number;
        w?: undefined;
    })[] | (string | {
        w: number;
        a?: undefined;
    } | {
        a: number;
        w: number;
    })[])[];
    apple_wireless: ((string | {
        y: number;
        t: string;
        p: string;
        a: number;
        f: number;
        w: number;
        h: number;
        fa?: undefined;
    } | {
        a: number;
        fa: number[];
        w: number;
        h: number;
        y?: undefined;
        t?: undefined;
        p?: undefined;
        f?: undefined;
    } | {
        w: number;
        h: number;
        y?: undefined;
        t?: undefined;
        p?: undefined;
        a?: undefined;
        f?: undefined;
        fa?: undefined;
    } | {
        fa: number[];
        w: number;
        h: number;
        y?: undefined;
        t?: undefined;
        p?: undefined;
        a?: undefined;
        f?: undefined;
    } | {
        a: number;
        w: number;
        h: number;
        y?: undefined;
        t?: undefined;
        p?: undefined;
        f?: undefined;
        fa?: undefined;
    })[] | (string | {
        y: number;
        a: number;
        f: number;
        w?: undefined;
    } | {
        a: number;
        f: number;
        w: number;
        y?: undefined;
    })[] | (string | {
        a: number;
        f: number;
        fa: number[];
        w: number;
        n?: undefined;
    } | {
        a: number;
        f: number;
        fa?: undefined;
        w?: undefined;
        n?: undefined;
    } | {
        n: boolean;
        a?: undefined;
        f?: undefined;
        fa?: undefined;
        w?: undefined;
    } | {
        a: number;
        f?: undefined;
        fa?: undefined;
        w?: undefined;
        n?: undefined;
    })[] | (string | {
        w: number;
        a?: undefined;
        f?: undefined;
    } | {
        a: number;
        f: number;
        w?: undefined;
    } | {
        a: number;
        w?: undefined;
        f?: undefined;
    } | {
        a: number;
        f: number;
        w: number;
    })[] | (string | {
        h: number;
        fa?: undefined;
        w?: undefined;
        a?: undefined;
        x?: undefined;
        f?: undefined;
    } | {
        fa: number[];
        h: number;
        w?: undefined;
        a?: undefined;
        x?: undefined;
        f?: undefined;
    } | {
        fa: number[];
        w: number;
        h: number;
        a?: undefined;
        x?: undefined;
        f?: undefined;
    } | {
        a: number;
        w: number;
        h: number;
        fa?: undefined;
        x?: undefined;
        f?: undefined;
    } | {
        a: number;
        fa: number[];
        w: number;
        h: number;
        x?: undefined;
        f?: undefined;
    } | {
        x: number;
        a: number;
        f: number;
        h: number;
        fa?: undefined;
        w?: undefined;
    })[] | (string | {
        y: number;
        x: number;
        h: number;
    } | {
        h: number;
        y?: undefined;
        x?: undefined;
    })[])[];
};

export { A_1N4148WS, KeyMatrix, getRefDesForKey, layouts, parseKLELayout };
export type { KLEKey, KLELayout };