---
title: Supported Hardware
sidebar_label: Supported Hardware
---

import HardwareList from "@site/src/components/hardware-list";
import Metadata from "@site/src/data/hardware-metadata.json";

import Heading from "@theme/Heading";

import { groupedMetadata } from "@site/src/components/hardware-utils";

export const toc = [
  {
    value: "Onboard Controller Keyboards",
    id: "onboard",
    level: 2,
  },
  {
    value: "Composite Keyboards",
    id: "composite",
    level: 2,
  },
  ...Object.values(groupedMetadata(Metadata).interconnects)
    .filter((ic) => ic.interconnect !== undefined)
    .map(({ interconnect }) => ({
      value: `${interconnect.name} Interconnect`,
      id: interconnect.id,
      level: 3,
    })),
  {
    value: "Other Hardware",
    id: "other-hardware",
    level: 2,
  },
  {
    value: "Contributing",
    id: "contributing",
    level: 2,
  },
];

With the solid technical foundation of Zephyr™ RTOS, ZMK can support a wide diversity of hardware targets.
That being said, there are specific [boards](faq.md#what-is-a-board) /
[shields](faq.md#what-is-a-shield) that have been implemented and tested by the ZMK contributors, listed below.

<HardwareList items={Metadata} />

{/* prettier-ignore */}
<Heading as="h2" id="other-hardware">Other Hardware</Heading>

In addition to the basic keyboard functionality, there is also support for additional keyboard hardware such as encoders, RGB underglow, backlight and displays.
Please see pages under the "Features" header in the sidebar for details.

{/* prettier-ignore */}
<Heading as="h2" id="contributing">Contributing</Heading>

If you'd like to add support for a new keyboard shield, head over to the [New Keyboard Shield](development/new-shield.mdx) documentation and note the [clean room design requirements](development/clean-room.md).
