# key icon

Key. Gentleface icon, drawn on the 16 px pixel grid. Free, MIT licensed. Page: https://gentleface.com/icons/key

- Category: Security & privacy
- Use it for: key, credential, access, credentials, password, access control, grant access
- Tags: password, access, credential
- Family: key-alert, key-check, key-clock, key-code, key-horizontal, key-off, key-plus, key-question
- Component name: KeyIcon
- Added: 2026-10-13
- Changed: 2026-10-14 (16 px redrawn); 2026-10-15 (20 px drawn, 24 px drawn)

## Alternatives

- `key-horizontal`: the horizontal key, when the product picks the horizontal credentials set
- `input-password`: a password field or PIN entry
- `user-key`: a passkey or a user's credentials
- `key-code`: an API key or access token

## Also fits

- two factor authentication: a password or a credential (password)
- key file: a credential or password without a file (credential)
- passkey: a key or credential in general
- user credentials: a credential not tied to a person (key owns credential)

## Not for

- license (use `certificate`): the key motif does not mean license
- password field (use `input-password`): the key motif does not mean password-field
- api key (use `key-code`): a bare key means a credential; API key is key + </>
- security key (use `security-key`): a credential in general
- security (use `shield`): the key motif does not mean security

## Files

Each SVG is 16 × 16 with fill="currentColor". Keep it at 16 px or an exact multiple (32, 48) on whole pixels: a fractional size or position blurs it.

- line-round: https://gentleface.com/svg/line-round/16/key.svg · PNG https://gentleface.com/png/line-round/16/key.png · https://gentleface.com/png/line-round/32/key.png · https://gentleface.com/png/line-round/48/key.png
- line-soft: https://gentleface.com/svg/line-soft/16/key.svg · PNG https://gentleface.com/png/line-soft/16/key.png · https://gentleface.com/png/line-soft/32/key.png · https://gentleface.com/png/line-soft/48/key.png
- line-sharp: https://gentleface.com/svg/line-sharp/16/key.svg · PNG https://gentleface.com/png/line-sharp/16/key.png · https://gentleface.com/png/line-sharp/32/key.png · https://gentleface.com/png/line-sharp/48/key.png
- solid-round: https://gentleface.com/svg/solid-round/16/key.svg · PNG https://gentleface.com/png/solid-round/16/key.png · https://gentleface.com/png/solid-round/32/key.png · https://gentleface.com/png/solid-round/48/key.png
- solid-soft: https://gentleface.com/svg/solid-soft/16/key.svg · PNG https://gentleface.com/png/solid-soft/16/key.png · https://gentleface.com/png/solid-soft/32/key.png · https://gentleface.com/png/solid-soft/48/key.png
- solid-sharp: https://gentleface.com/svg/solid-sharp/16/key.svg · PNG https://gentleface.com/png/solid-sharp/16/key.png · https://gentleface.com/png/solid-sharp/32/key.png · https://gentleface.com/png/solid-sharp/48/key.png

The SVG of every style: https://gentleface.com/icons/key.json (`svg`).

## Code (line-round)

The snippets are decorative (aria-hidden). For an icon that carries meaning on its own, such as an icon-only button, label the button, or give the SVG role="img" and an aria-label. For another style, take its SVG from the JSON and swap the path `d`.

### SVG

```svg
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path d="M1.222 11.385C1.37 11.028 1.58 10.713 1.854 10.439L6.06 6.233C5.978 5.742 5.979 5.248 6.063 4.752C6.171 4.106 6.41 3.513 6.778 2.971C7.146 2.43 7.61 1.989 8.17 1.65C8.681 1.341 9.232 1.141 9.823 1.051C10.414 0.961 11 0.988 11.58 1.132C12.216 1.289 12.79 1.571 13.302 1.979C13.815 2.387 14.219 2.883 14.514 3.467C14.785 4 14.942 4.565 14.987 5.161C15.032 5.757 14.961 6.339 14.775 6.907C14.57 7.529 14.245 8.08 13.8 8.56C13.355 9.04 12.83 9.405 12.225 9.656C11.673 9.885 11.098 10 10.5 10L8 10L8 11.5C8 11.641 7.952 11.759 7.856 11.856C7.759 11.952 7.641 12 7.5 12L6 12L6 12.793C6 13.086 5.944 13.367 5.832 13.638C5.72 13.908 5.561 14.147 5.354 14.354C5.147 14.561 4.908 14.72 4.638 14.832C4.367 14.944 4.086 15 3.793 15L1.5 15C1.359 15 1.241 14.952 1.144 14.856C1.048 14.759 1 14.641 1 14.5L1 12.5C1 12.114 1.074 11.742 1.222 11.385ZM5.144 11.144C5.241 11.048 5.359 11 5.5 11L7 11L7 9.5C7 9.359 7.048 9.241 7.144 9.144C7.241 9.048 7.359 9 7.5 9L10.5 9C10.965 9 11.412 8.911 11.842 8.733C12.312 8.537 12.72 8.253 13.066 7.88C13.413 7.506 13.665 7.078 13.825 6.594C13.97 6.152 14.025 5.7 13.99 5.236C13.955 4.772 13.832 4.333 13.622 3.919C13.392 3.464 13.078 3.079 12.679 2.761C12.281 2.444 11.835 2.225 11.34 2.102C10.889 1.991 10.433 1.97 9.974 2.04C9.514 2.11 9.085 2.265 8.688 2.506C8.252 2.77 7.891 3.112 7.605 3.533C7.319 3.954 7.133 4.416 7.049 4.918C6.971 5.377 6.985 5.833 7.089 6.286C7.109 6.37 7.107 6.454 7.083 6.536C7.06 6.618 7.017 6.69 6.956 6.751L2.561 11.146C2.381 11.326 2.243 11.533 2.146 11.767C2.049 12.002 2 12.246 2 12.5L2 14L3.793 14C4.126 14 4.411 13.882 4.646 13.646C4.882 13.411 5 13.126 5 12.793L5 11.5C5 11.359 5.048 11.241 5.144 11.144ZM11.207 4.793C11.402 4.988 11.5 5.224 11.5 5.5C11.5 5.776 11.402 6.012 11.207 6.207C11.012 6.402 10.776 6.5 10.5 6.5C10.224 6.5 9.988 6.402 9.793 6.207C9.598 6.012 9.5 5.776 9.5 5.5C9.5 5.224 9.598 4.988 9.793 4.793C9.988 4.598 10.224 4.5 10.5 4.5C10.776 4.5 11.012 4.598 11.207 4.793Z"/></svg>
```

### React

```tsx
// Gentleface "key" (line-round), MIT. https://gentleface.com/icons/key
import type { SVGProps } from 'react';

export function KeyIcon(props: SVGProps<SVGSVGElement>) {
  return (
    <svg xmlns="http://www.w3.org/2000/svg" width={16} height={16} viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" {...props}>
      <path d="M1.222 11.385C1.37 11.028 1.58 10.713 1.854 10.439L6.06 6.233C5.978 5.742 5.979 5.248 6.063 4.752C6.171 4.106 6.41 3.513 6.778 2.971C7.146 2.43 7.61 1.989 8.17 1.65C8.681 1.341 9.232 1.141 9.823 1.051C10.414 0.961 11 0.988 11.58 1.132C12.216 1.289 12.79 1.571 13.302 1.979C13.815 2.387 14.219 2.883 14.514 3.467C14.785 4 14.942 4.565 14.987 5.161C15.032 5.757 14.961 6.339 14.775 6.907C14.57 7.529 14.245 8.08 13.8 8.56C13.355 9.04 12.83 9.405 12.225 9.656C11.673 9.885 11.098 10 10.5 10L8 10L8 11.5C8 11.641 7.952 11.759 7.856 11.856C7.759 11.952 7.641 12 7.5 12L6 12L6 12.793C6 13.086 5.944 13.367 5.832 13.638C5.72 13.908 5.561 14.147 5.354 14.354C5.147 14.561 4.908 14.72 4.638 14.832C4.367 14.944 4.086 15 3.793 15L1.5 15C1.359 15 1.241 14.952 1.144 14.856C1.048 14.759 1 14.641 1 14.5L1 12.5C1 12.114 1.074 11.742 1.222 11.385ZM5.144 11.144C5.241 11.048 5.359 11 5.5 11L7 11L7 9.5C7 9.359 7.048 9.241 7.144 9.144C7.241 9.048 7.359 9 7.5 9L10.5 9C10.965 9 11.412 8.911 11.842 8.733C12.312 8.537 12.72 8.253 13.066 7.88C13.413 7.506 13.665 7.078 13.825 6.594C13.97 6.152 14.025 5.7 13.99 5.236C13.955 4.772 13.832 4.333 13.622 3.919C13.392 3.464 13.078 3.079 12.679 2.761C12.281 2.444 11.835 2.225 11.34 2.102C10.889 1.991 10.433 1.97 9.974 2.04C9.514 2.11 9.085 2.265 8.688 2.506C8.252 2.77 7.891 3.112 7.605 3.533C7.319 3.954 7.133 4.416 7.049 4.918C6.971 5.377 6.985 5.833 7.089 6.286C7.109 6.37 7.107 6.454 7.083 6.536C7.06 6.618 7.017 6.69 6.956 6.751L2.561 11.146C2.381 11.326 2.243 11.533 2.146 11.767C2.049 12.002 2 12.246 2 12.5L2 14L3.793 14C4.126 14 4.411 13.882 4.646 13.646C4.882 13.411 5 13.126 5 12.793L5 11.5C5 11.359 5.048 11.241 5.144 11.144ZM11.207 4.793C11.402 4.988 11.5 5.224 11.5 5.5C11.5 5.776 11.402 6.012 11.207 6.207C11.012 6.402 10.776 6.5 10.5 6.5C10.224 6.5 9.988 6.402 9.793 6.207C9.598 6.012 9.5 5.776 9.5 5.5C9.5 5.224 9.598 4.988 9.793 4.793C9.988 4.598 10.224 4.5 10.5 4.5C10.776 4.5 11.012 4.598 11.207 4.793Z" />
    </svg>
  );
}
```

### Vue

```vue
<!-- Gentleface "key" (line-round), MIT. https://gentleface.com/icons/key -->
<template>
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true">
    <path d="M1.222 11.385C1.37 11.028 1.58 10.713 1.854 10.439L6.06 6.233C5.978 5.742 5.979 5.248 6.063 4.752C6.171 4.106 6.41 3.513 6.778 2.971C7.146 2.43 7.61 1.989 8.17 1.65C8.681 1.341 9.232 1.141 9.823 1.051C10.414 0.961 11 0.988 11.58 1.132C12.216 1.289 12.79 1.571 13.302 1.979C13.815 2.387 14.219 2.883 14.514 3.467C14.785 4 14.942 4.565 14.987 5.161C15.032 5.757 14.961 6.339 14.775 6.907C14.57 7.529 14.245 8.08 13.8 8.56C13.355 9.04 12.83 9.405 12.225 9.656C11.673 9.885 11.098 10 10.5 10L8 10L8 11.5C8 11.641 7.952 11.759 7.856 11.856C7.759 11.952 7.641 12 7.5 12L6 12L6 12.793C6 13.086 5.944 13.367 5.832 13.638C5.72 13.908 5.561 14.147 5.354 14.354C5.147 14.561 4.908 14.72 4.638 14.832C4.367 14.944 4.086 15 3.793 15L1.5 15C1.359 15 1.241 14.952 1.144 14.856C1.048 14.759 1 14.641 1 14.5L1 12.5C1 12.114 1.074 11.742 1.222 11.385ZM5.144 11.144C5.241 11.048 5.359 11 5.5 11L7 11L7 9.5C7 9.359 7.048 9.241 7.144 9.144C7.241 9.048 7.359 9 7.5 9L10.5 9C10.965 9 11.412 8.911 11.842 8.733C12.312 8.537 12.72 8.253 13.066 7.88C13.413 7.506 13.665 7.078 13.825 6.594C13.97 6.152 14.025 5.7 13.99 5.236C13.955 4.772 13.832 4.333 13.622 3.919C13.392 3.464 13.078 3.079 12.679 2.761C12.281 2.444 11.835 2.225 11.34 2.102C10.889 1.991 10.433 1.97 9.974 2.04C9.514 2.11 9.085 2.265 8.688 2.506C8.252 2.77 7.891 3.112 7.605 3.533C7.319 3.954 7.133 4.416 7.049 4.918C6.971 5.377 6.985 5.833 7.089 6.286C7.109 6.37 7.107 6.454 7.083 6.536C7.06 6.618 7.017 6.69 6.956 6.751L2.561 11.146C2.381 11.326 2.243 11.533 2.146 11.767C2.049 12.002 2 12.246 2 12.5L2 14L3.793 14C4.126 14 4.411 13.882 4.646 13.646C4.882 13.411 5 13.126 5 12.793L5 11.5C5 11.359 5.048 11.241 5.144 11.144ZM11.207 4.793C11.402 4.988 11.5 5.224 11.5 5.5C11.5 5.776 11.402 6.012 11.207 6.207C11.012 6.402 10.776 6.5 10.5 6.5C10.224 6.5 9.988 6.402 9.793 6.207C9.598 6.012 9.5 5.776 9.5 5.5C9.5 5.224 9.598 4.988 9.793 4.793C9.988 4.598 10.224 4.5 10.5 4.5C10.776 4.5 11.012 4.598 11.207 4.793Z" />
  </svg>
</template>
```

### Svelte

```svelte
<!-- Gentleface "key" (line-round), MIT. https://gentleface.com/icons/key -->
<script>
  let props = $props();
</script>

<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" {...props}>
  <path d="M1.222 11.385C1.37 11.028 1.58 10.713 1.854 10.439L6.06 6.233C5.978 5.742 5.979 5.248 6.063 4.752C6.171 4.106 6.41 3.513 6.778 2.971C7.146 2.43 7.61 1.989 8.17 1.65C8.681 1.341 9.232 1.141 9.823 1.051C10.414 0.961 11 0.988 11.58 1.132C12.216 1.289 12.79 1.571 13.302 1.979C13.815 2.387 14.219 2.883 14.514 3.467C14.785 4 14.942 4.565 14.987 5.161C15.032 5.757 14.961 6.339 14.775 6.907C14.57 7.529 14.245 8.08 13.8 8.56C13.355 9.04 12.83 9.405 12.225 9.656C11.673 9.885 11.098 10 10.5 10L8 10L8 11.5C8 11.641 7.952 11.759 7.856 11.856C7.759 11.952 7.641 12 7.5 12L6 12L6 12.793C6 13.086 5.944 13.367 5.832 13.638C5.72 13.908 5.561 14.147 5.354 14.354C5.147 14.561 4.908 14.72 4.638 14.832C4.367 14.944 4.086 15 3.793 15L1.5 15C1.359 15 1.241 14.952 1.144 14.856C1.048 14.759 1 14.641 1 14.5L1 12.5C1 12.114 1.074 11.742 1.222 11.385ZM5.144 11.144C5.241 11.048 5.359 11 5.5 11L7 11L7 9.5C7 9.359 7.048 9.241 7.144 9.144C7.241 9.048 7.359 9 7.5 9L10.5 9C10.965 9 11.412 8.911 11.842 8.733C12.312 8.537 12.72 8.253 13.066 7.88C13.413 7.506 13.665 7.078 13.825 6.594C13.97 6.152 14.025 5.7 13.99 5.236C13.955 4.772 13.832 4.333 13.622 3.919C13.392 3.464 13.078 3.079 12.679 2.761C12.281 2.444 11.835 2.225 11.34 2.102C10.889 1.991 10.433 1.97 9.974 2.04C9.514 2.11 9.085 2.265 8.688 2.506C8.252 2.77 7.891 3.112 7.605 3.533C7.319 3.954 7.133 4.416 7.049 4.918C6.971 5.377 6.985 5.833 7.089 6.286C7.109 6.37 7.107 6.454 7.083 6.536C7.06 6.618 7.017 6.69 6.956 6.751L2.561 11.146C2.381 11.326 2.243 11.533 2.146 11.767C2.049 12.002 2 12.246 2 12.5L2 14L3.793 14C4.126 14 4.411 13.882 4.646 13.646C4.882 13.411 5 13.126 5 12.793L5 11.5C5 11.359 5.048 11.241 5.144 11.144ZM11.207 4.793C11.402 4.988 11.5 5.224 11.5 5.5C11.5 5.776 11.402 6.012 11.207 6.207C11.012 6.402 10.776 6.5 10.5 6.5C10.224 6.5 9.988 6.402 9.793 6.207C9.598 6.012 9.5 5.776 9.5 5.5C9.5 5.224 9.598 4.988 9.793 4.793C9.988 4.598 10.224 4.5 10.5 4.5C10.776 4.5 11.012 4.598 11.207 4.793Z" />
</svg>
```

### HTML img

```html
<!-- Gentleface "key" (line-round), MIT. https://gentleface.com/icons/key. An <img> can't take currentColor: it draws black. Inline the SVG or use the CSS mask to color it. -->
<img src="https://gentleface.com/svg/line-round/16/key.svg" width="16" height="16" alt="">
```

### CSS

```css
/* Gentleface "key" (line-round), MIT. https://gentleface.com/icons/key. Takes the text color. */
.icon-key {
  display: inline-block;
  width: 16px;
  height: 16px;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M1.222 11.385C1.37 11.028 1.58 10.713 1.854 10.439L6.06 6.233C5.978 5.742 5.979 5.248 6.063 4.752C6.171 4.106 6.41 3.513 6.778 2.971C7.146 2.43 7.61 1.989 8.17 1.65C8.681 1.341 9.232 1.141 9.823 1.051C10.414 0.961 11 0.988 11.58 1.132C12.216 1.289 12.79 1.571 13.302 1.979C13.815 2.387 14.219 2.883 14.514 3.467C14.785 4 14.942 4.565 14.987 5.161C15.032 5.757 14.961 6.339 14.775 6.907C14.57 7.529 14.245 8.08 13.8 8.56C13.355 9.04 12.83 9.405 12.225 9.656C11.673 9.885 11.098 10 10.5 10L8 10L8 11.5C8 11.641 7.952 11.759 7.856 11.856C7.759 11.952 7.641 12 7.5 12L6 12L6 12.793C6 13.086 5.944 13.367 5.832 13.638C5.72 13.908 5.561 14.147 5.354 14.354C5.147 14.561 4.908 14.72 4.638 14.832C4.367 14.944 4.086 15 3.793 15L1.5 15C1.359 15 1.241 14.952 1.144 14.856C1.048 14.759 1 14.641 1 14.5L1 12.5C1 12.114 1.074 11.742 1.222 11.385ZM5.144 11.144C5.241 11.048 5.359 11 5.5 11L7 11L7 9.5C7 9.359 7.048 9.241 7.144 9.144C7.241 9.048 7.359 9 7.5 9L10.5 9C10.965 9 11.412 8.911 11.842 8.733C12.312 8.537 12.72 8.253 13.066 7.88C13.413 7.506 13.665 7.078 13.825 6.594C13.97 6.152 14.025 5.7 13.99 5.236C13.955 4.772 13.832 4.333 13.622 3.919C13.392 3.464 13.078 3.079 12.679 2.761C12.281 2.444 11.835 2.225 11.34 2.102C10.889 1.991 10.433 1.97 9.974 2.04C9.514 2.11 9.085 2.265 8.688 2.506C8.252 2.77 7.891 3.112 7.605 3.533C7.319 3.954 7.133 4.416 7.049 4.918C6.971 5.377 6.985 5.833 7.089 6.286C7.109 6.37 7.107 6.454 7.083 6.536C7.06 6.618 7.017 6.69 6.956 6.751L2.561 11.146C2.381 11.326 2.243 11.533 2.146 11.767C2.049 12.002 2 12.246 2 12.5L2 14L3.793 14C4.126 14 4.411 13.882 4.646 13.646C4.882 13.411 5 13.126 5 12.793L5 11.5C5 11.359 5.048 11.241 5.144 11.144ZM11.207 4.793C11.402 4.988 11.5 5.224 11.5 5.5C11.5 5.776 11.402 6.012 11.207 6.207C11.012 6.402 10.776 6.5 10.5 6.5C10.224 6.5 9.988 6.402 9.793 6.207C9.598 6.012 9.5 5.776 9.5 5.5C9.5 5.224 9.598 4.988 9.793 4.793C9.988 4.598 10.224 4.5 10.5 4.5C10.776 4.5 11.012 4.598 11.207 4.793Z'/%3E%3C/svg%3E") center / 16px 16px no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M1.222 11.385C1.37 11.028 1.58 10.713 1.854 10.439L6.06 6.233C5.978 5.742 5.979 5.248 6.063 4.752C6.171 4.106 6.41 3.513 6.778 2.971C7.146 2.43 7.61 1.989 8.17 1.65C8.681 1.341 9.232 1.141 9.823 1.051C10.414 0.961 11 0.988 11.58 1.132C12.216 1.289 12.79 1.571 13.302 1.979C13.815 2.387 14.219 2.883 14.514 3.467C14.785 4 14.942 4.565 14.987 5.161C15.032 5.757 14.961 6.339 14.775 6.907C14.57 7.529 14.245 8.08 13.8 8.56C13.355 9.04 12.83 9.405 12.225 9.656C11.673 9.885 11.098 10 10.5 10L8 10L8 11.5C8 11.641 7.952 11.759 7.856 11.856C7.759 11.952 7.641 12 7.5 12L6 12L6 12.793C6 13.086 5.944 13.367 5.832 13.638C5.72 13.908 5.561 14.147 5.354 14.354C5.147 14.561 4.908 14.72 4.638 14.832C4.367 14.944 4.086 15 3.793 15L1.5 15C1.359 15 1.241 14.952 1.144 14.856C1.048 14.759 1 14.641 1 14.5L1 12.5C1 12.114 1.074 11.742 1.222 11.385ZM5.144 11.144C5.241 11.048 5.359 11 5.5 11L7 11L7 9.5C7 9.359 7.048 9.241 7.144 9.144C7.241 9.048 7.359 9 7.5 9L10.5 9C10.965 9 11.412 8.911 11.842 8.733C12.312 8.537 12.72 8.253 13.066 7.88C13.413 7.506 13.665 7.078 13.825 6.594C13.97 6.152 14.025 5.7 13.99 5.236C13.955 4.772 13.832 4.333 13.622 3.919C13.392 3.464 13.078 3.079 12.679 2.761C12.281 2.444 11.835 2.225 11.34 2.102C10.889 1.991 10.433 1.97 9.974 2.04C9.514 2.11 9.085 2.265 8.688 2.506C8.252 2.77 7.891 3.112 7.605 3.533C7.319 3.954 7.133 4.416 7.049 4.918C6.971 5.377 6.985 5.833 7.089 6.286C7.109 6.37 7.107 6.454 7.083 6.536C7.06 6.618 7.017 6.69 6.956 6.751L2.561 11.146C2.381 11.326 2.243 11.533 2.146 11.767C2.049 12.002 2 12.246 2 12.5L2 14L3.793 14C4.126 14 4.411 13.882 4.646 13.646C4.882 13.411 5 13.126 5 12.793L5 11.5C5 11.359 5.048 11.241 5.144 11.144ZM11.207 4.793C11.402 4.988 11.5 5.224 11.5 5.5C11.5 5.776 11.402 6.012 11.207 6.207C11.012 6.402 10.776 6.5 10.5 6.5C10.224 6.5 9.988 6.402 9.793 6.207C9.598 6.012 9.5 5.776 9.5 5.5C9.5 5.224 9.598 4.988 9.793 4.793C9.988 4.598 10.224 4.5 10.5 4.5C10.776 4.5 11.012 4.598 11.207 4.793Z'/%3E%3C/svg%3E") center / 16px 16px no-repeat;
}
```

### Data URL

```text
data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M1.222 11.385C1.37 11.028 1.58 10.713 1.854 10.439L6.06 6.233C5.978 5.742 5.979 5.248 6.063 4.752C6.171 4.106 6.41 3.513 6.778 2.971C7.146 2.43 7.61 1.989 8.17 1.65C8.681 1.341 9.232 1.141 9.823 1.051C10.414 0.961 11 0.988 11.58 1.132C12.216 1.289 12.79 1.571 13.302 1.979C13.815 2.387 14.219 2.883 14.514 3.467C14.785 4 14.942 4.565 14.987 5.161C15.032 5.757 14.961 6.339 14.775 6.907C14.57 7.529 14.245 8.08 13.8 8.56C13.355 9.04 12.83 9.405 12.225 9.656C11.673 9.885 11.098 10 10.5 10L8 10L8 11.5C8 11.641 7.952 11.759 7.856 11.856C7.759 11.952 7.641 12 7.5 12L6 12L6 12.793C6 13.086 5.944 13.367 5.832 13.638C5.72 13.908 5.561 14.147 5.354 14.354C5.147 14.561 4.908 14.72 4.638 14.832C4.367 14.944 4.086 15 3.793 15L1.5 15C1.359 15 1.241 14.952 1.144 14.856C1.048 14.759 1 14.641 1 14.5L1 12.5C1 12.114 1.074 11.742 1.222 11.385ZM5.144 11.144C5.241 11.048 5.359 11 5.5 11L7 11L7 9.5C7 9.359 7.048 9.241 7.144 9.144C7.241 9.048 7.359 9 7.5 9L10.5 9C10.965 9 11.412 8.911 11.842 8.733C12.312 8.537 12.72 8.253 13.066 7.88C13.413 7.506 13.665 7.078 13.825 6.594C13.97 6.152 14.025 5.7 13.99 5.236C13.955 4.772 13.832 4.333 13.622 3.919C13.392 3.464 13.078 3.079 12.679 2.761C12.281 2.444 11.835 2.225 11.34 2.102C10.889 1.991 10.433 1.97 9.974 2.04C9.514 2.11 9.085 2.265 8.688 2.506C8.252 2.77 7.891 3.112 7.605 3.533C7.319 3.954 7.133 4.416 7.049 4.918C6.971 5.377 6.985 5.833 7.089 6.286C7.109 6.37 7.107 6.454 7.083 6.536C7.06 6.618 7.017 6.69 6.956 6.751L2.561 11.146C2.381 11.326 2.243 11.533 2.146 11.767C2.049 12.002 2 12.246 2 12.5L2 14L3.793 14C4.126 14 4.411 13.882 4.646 13.646C4.882 13.411 5 13.126 5 12.793L5 11.5C5 11.359 5.048 11.241 5.144 11.144ZM11.207 4.793C11.402 4.988 11.5 5.224 11.5 5.5C11.5 5.776 11.402 6.012 11.207 6.207C11.012 6.402 10.776 6.5 10.5 6.5C10.224 6.5 9.988 6.402 9.793 6.207C9.598 6.012 9.5 5.776 9.5 5.5C9.5 5.224 9.598 4.988 9.793 4.793C9.988 4.598 10.224 4.5 10.5 4.5C10.776 4.5 11.012 4.598 11.207 4.793Z'/%3E%3C/svg%3E
```

### Sprite

```html
<!-- Gentleface "key" (line-round), MIT. https://gentleface.com/icons/key
     Every icon of this style in one file: https://gentleface.com/sprite/line-round.svg
     Serve it from your own origin: <use> does not load from another origin. -->
<svg width="16" height="16" aria-hidden="true"><use href="/sprite/line-round.svg#key"/></svg>
```

### SwiftUI

```swift
// Gentleface "key" (line-round), MIT. https://gentleface.com/icons/key
import SwiftUI

struct KeyIcon: Shape {
    func path(in rect: CGRect) -> Path {
        var p = Path()
        p.move(to: CGPoint(x: 1.222, y: 11.385))
        p.addCurve(to: CGPoint(x: 1.854, y: 10.439), control1: CGPoint(x: 1.37, y: 11.028), control2: CGPoint(x: 1.58, y: 10.713))
        p.addLine(to: CGPoint(x: 6.06, y: 6.233))
        p.addCurve(to: CGPoint(x: 6.063, y: 4.752), control1: CGPoint(x: 5.978, y: 5.742), control2: CGPoint(x: 5.979, y: 5.248))
        p.addCurve(to: CGPoint(x: 6.778, y: 2.971), control1: CGPoint(x: 6.171, y: 4.106), control2: CGPoint(x: 6.41, y: 3.513))
        p.addCurve(to: CGPoint(x: 8.17, y: 1.65), control1: CGPoint(x: 7.146, y: 2.43), control2: CGPoint(x: 7.61, y: 1.989))
        p.addCurve(to: CGPoint(x: 9.823, y: 1.051), control1: CGPoint(x: 8.681, y: 1.341), control2: CGPoint(x: 9.232, y: 1.141))
        p.addCurve(to: CGPoint(x: 11.58, y: 1.132), control1: CGPoint(x: 10.414, y: 0.961), control2: CGPoint(x: 11, y: 0.988))
        p.addCurve(to: CGPoint(x: 13.302, y: 1.979), control1: CGPoint(x: 12.216, y: 1.289), control2: CGPoint(x: 12.79, y: 1.571))
        p.addCurve(to: CGPoint(x: 14.514, y: 3.467), control1: CGPoint(x: 13.815, y: 2.387), control2: CGPoint(x: 14.219, y: 2.883))
        p.addCurve(to: CGPoint(x: 14.987, y: 5.161), control1: CGPoint(x: 14.785, y: 4), control2: CGPoint(x: 14.942, y: 4.565))
        p.addCurve(to: CGPoint(x: 14.775, y: 6.907), control1: CGPoint(x: 15.032, y: 5.757), control2: CGPoint(x: 14.961, y: 6.339))
        p.addCurve(to: CGPoint(x: 13.8, y: 8.56), control1: CGPoint(x: 14.57, y: 7.529), control2: CGPoint(x: 14.245, y: 8.08))
        p.addCurve(to: CGPoint(x: 12.225, y: 9.656), control1: CGPoint(x: 13.355, y: 9.04), control2: CGPoint(x: 12.83, y: 9.405))
        p.addCurve(to: CGPoint(x: 10.5, y: 10), control1: CGPoint(x: 11.673, y: 9.885), control2: CGPoint(x: 11.098, y: 10))
        p.addLine(to: CGPoint(x: 8, y: 10))
        p.addLine(to: CGPoint(x: 8, y: 11.5))
        p.addCurve(to: CGPoint(x: 7.856, y: 11.856), control1: CGPoint(x: 8, y: 11.641), control2: CGPoint(x: 7.952, y: 11.759))
        p.addCurve(to: CGPoint(x: 7.5, y: 12), control1: CGPoint(x: 7.759, y: 11.952), control2: CGPoint(x: 7.641, y: 12))
        p.addLine(to: CGPoint(x: 6, y: 12))
        p.addLine(to: CGPoint(x: 6, y: 12.793))
        p.addCurve(to: CGPoint(x: 5.832, y: 13.638), control1: CGPoint(x: 6, y: 13.086), control2: CGPoint(x: 5.944, y: 13.367))
        p.addCurve(to: CGPoint(x: 5.354, y: 14.354), control1: CGPoint(x: 5.72, y: 13.908), control2: CGPoint(x: 5.561, y: 14.147))
        p.addCurve(to: CGPoint(x: 4.638, y: 14.832), control1: CGPoint(x: 5.147, y: 14.561), control2: CGPoint(x: 4.908, y: 14.72))
        p.addCurve(to: CGPoint(x: 3.793, y: 15), control1: CGPoint(x: 4.367, y: 14.944), control2: CGPoint(x: 4.086, y: 15))
        p.addLine(to: CGPoint(x: 1.5, y: 15))
        p.addCurve(to: CGPoint(x: 1.144, y: 14.856), control1: CGPoint(x: 1.359, y: 15), control2: CGPoint(x: 1.241, y: 14.952))
        p.addCurve(to: CGPoint(x: 1, y: 14.5), control1: CGPoint(x: 1.048, y: 14.759), control2: CGPoint(x: 1, y: 14.641))
        p.addLine(to: CGPoint(x: 1, y: 12.5))
        p.addCurve(to: CGPoint(x: 1.222, y: 11.385), control1: CGPoint(x: 1, y: 12.114), control2: CGPoint(x: 1.074, y: 11.742))
        p.closeSubpath()
        p.move(to: CGPoint(x: 5.144, y: 11.144))
        p.addCurve(to: CGPoint(x: 5.5, y: 11), control1: CGPoint(x: 5.241, y: 11.048), control2: CGPoint(x: 5.359, y: 11))
        p.addLine(to: CGPoint(x: 7, y: 11))
        p.addLine(to: CGPoint(x: 7, y: 9.5))
        p.addCurve(to: CGPoint(x: 7.144, y: 9.144), control1: CGPoint(x: 7, y: 9.359), control2: CGPoint(x: 7.048, y: 9.241))
        p.addCurve(to: CGPoint(x: 7.5, y: 9), control1: CGPoint(x: 7.241, y: 9.048), control2: CGPoint(x: 7.359, y: 9))
        p.addLine(to: CGPoint(x: 10.5, y: 9))
        p.addCurve(to: CGPoint(x: 11.842, y: 8.733), control1: CGPoint(x: 10.965, y: 9), control2: CGPoint(x: 11.412, y: 8.911))
        p.addCurve(to: CGPoint(x: 13.066, y: 7.88), control1: CGPoint(x: 12.312, y: 8.537), control2: CGPoint(x: 12.72, y: 8.253))
        p.addCurve(to: CGPoint(x: 13.825, y: 6.594), control1: CGPoint(x: 13.413, y: 7.506), control2: CGPoint(x: 13.665, y: 7.078))
        p.addCurve(to: CGPoint(x: 13.99, y: 5.236), control1: CGPoint(x: 13.97, y: 6.152), control2: CGPoint(x: 14.025, y: 5.7))
        p.addCurve(to: CGPoint(x: 13.622, y: 3.919), control1: CGPoint(x: 13.955, y: 4.772), control2: CGPoint(x: 13.832, y: 4.333))
        p.addCurve(to: CGPoint(x: 12.679, y: 2.761), control1: CGPoint(x: 13.392, y: 3.464), control2: CGPoint(x: 13.078, y: 3.079))
        p.addCurve(to: CGPoint(x: 11.34, y: 2.102), control1: CGPoint(x: 12.281, y: 2.444), control2: CGPoint(x: 11.835, y: 2.225))
        p.addCurve(to: CGPoint(x: 9.974, y: 2.04), control1: CGPoint(x: 10.889, y: 1.991), control2: CGPoint(x: 10.433, y: 1.97))
        p.addCurve(to: CGPoint(x: 8.688, y: 2.506), control1: CGPoint(x: 9.514, y: 2.11), control2: CGPoint(x: 9.085, y: 2.265))
        p.addCurve(to: CGPoint(x: 7.605, y: 3.533), control1: CGPoint(x: 8.252, y: 2.77), control2: CGPoint(x: 7.891, y: 3.112))
        p.addCurve(to: CGPoint(x: 7.049, y: 4.918), control1: CGPoint(x: 7.319, y: 3.954), control2: CGPoint(x: 7.133, y: 4.416))
        p.addCurve(to: CGPoint(x: 7.089, y: 6.286), control1: CGPoint(x: 6.971, y: 5.377), control2: CGPoint(x: 6.985, y: 5.833))
        p.addCurve(to: CGPoint(x: 7.083, y: 6.536), control1: CGPoint(x: 7.109, y: 6.37), control2: CGPoint(x: 7.107, y: 6.454))
        p.addCurve(to: CGPoint(x: 6.956, y: 6.751), control1: CGPoint(x: 7.06, y: 6.618), control2: CGPoint(x: 7.017, y: 6.69))
        p.addLine(to: CGPoint(x: 2.561, y: 11.146))
        p.addCurve(to: CGPoint(x: 2.146, y: 11.767), control1: CGPoint(x: 2.381, y: 11.326), control2: CGPoint(x: 2.243, y: 11.533))
        p.addCurve(to: CGPoint(x: 2, y: 12.5), control1: CGPoint(x: 2.049, y: 12.002), control2: CGPoint(x: 2, y: 12.246))
        p.addLine(to: CGPoint(x: 2, y: 14))
        p.addLine(to: CGPoint(x: 3.793, y: 14))
        p.addCurve(to: CGPoint(x: 4.646, y: 13.646), control1: CGPoint(x: 4.126, y: 14), control2: CGPoint(x: 4.411, y: 13.882))
        p.addCurve(to: CGPoint(x: 5, y: 12.793), control1: CGPoint(x: 4.882, y: 13.411), control2: CGPoint(x: 5, y: 13.126))
        p.addLine(to: CGPoint(x: 5, y: 11.5))
        p.addCurve(to: CGPoint(x: 5.144, y: 11.144), control1: CGPoint(x: 5, y: 11.359), control2: CGPoint(x: 5.048, y: 11.241))
        p.closeSubpath()
        p.move(to: CGPoint(x: 11.207, y: 4.793))
        p.addCurve(to: CGPoint(x: 11.5, y: 5.5), control1: CGPoint(x: 11.402, y: 4.988), control2: CGPoint(x: 11.5, y: 5.224))
        p.addCurve(to: CGPoint(x: 11.207, y: 6.207), control1: CGPoint(x: 11.5, y: 5.776), control2: CGPoint(x: 11.402, y: 6.012))
        p.addCurve(to: CGPoint(x: 10.5, y: 6.5), control1: CGPoint(x: 11.012, y: 6.402), control2: CGPoint(x: 10.776, y: 6.5))
        p.addCurve(to: CGPoint(x: 9.793, y: 6.207), control1: CGPoint(x: 10.224, y: 6.5), control2: CGPoint(x: 9.988, y: 6.402))
        p.addCurve(to: CGPoint(x: 9.5, y: 5.5), control1: CGPoint(x: 9.598, y: 6.012), control2: CGPoint(x: 9.5, y: 5.776))
        p.addCurve(to: CGPoint(x: 9.793, y: 4.793), control1: CGPoint(x: 9.5, y: 5.224), control2: CGPoint(x: 9.598, y: 4.988))
        p.addCurve(to: CGPoint(x: 10.5, y: 4.5), control1: CGPoint(x: 9.988, y: 4.598), control2: CGPoint(x: 10.224, y: 4.5))
        p.addCurve(to: CGPoint(x: 11.207, y: 4.793), control1: CGPoint(x: 10.776, y: 4.5), control2: CGPoint(x: 11.012, y: 4.598))
        p.closeSubpath()
        return p.applying(CGAffineTransform(scaleX: rect.width / 16, y: rect.height / 16))
    }
}

// KeyIcon().frame(width: 16, height: 16) fills with the foreground style. Keep it on whole points to stay crisp.
```

### Compose

```kotlin
// Gentleface "key" (line-round), MIT. https://gentleface.com/icons/key
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.addPathNodes
import androidx.compose.ui.unit.dp

val KeyIcon: ImageVector by lazy {
    ImageVector.Builder(
        name = "key", defaultWidth = 16.dp, defaultHeight = 16.dp,
        viewportWidth = 16f, viewportHeight = 16f,
    ).addPath(
        pathData = addPathNodes("M1.222 11.385C1.37 11.028 1.58 10.713 1.854 10.439L6.06 6.233C5.978 5.742 5.979 5.248 6.063 4.752C6.171 4.106 6.41 3.513 6.778 2.971C7.146 2.43 7.61 1.989 8.17 1.65C8.681 1.341 9.232 1.141 9.823 1.051C10.414 0.961 11 0.988 11.58 1.132C12.216 1.289 12.79 1.571 13.302 1.979C13.815 2.387 14.219 2.883 14.514 3.467C14.785 4 14.942 4.565 14.987 5.161C15.032 5.757 14.961 6.339 14.775 6.907C14.57 7.529 14.245 8.08 13.8 8.56C13.355 9.04 12.83 9.405 12.225 9.656C11.673 9.885 11.098 10 10.5 10L8 10L8 11.5C8 11.641 7.952 11.759 7.856 11.856C7.759 11.952 7.641 12 7.5 12L6 12L6 12.793C6 13.086 5.944 13.367 5.832 13.638C5.72 13.908 5.561 14.147 5.354 14.354C5.147 14.561 4.908 14.72 4.638 14.832C4.367 14.944 4.086 15 3.793 15L1.5 15C1.359 15 1.241 14.952 1.144 14.856C1.048 14.759 1 14.641 1 14.5L1 12.5C1 12.114 1.074 11.742 1.222 11.385ZM5.144 11.144C5.241 11.048 5.359 11 5.5 11L7 11L7 9.5C7 9.359 7.048 9.241 7.144 9.144C7.241 9.048 7.359 9 7.5 9L10.5 9C10.965 9 11.412 8.911 11.842 8.733C12.312 8.537 12.72 8.253 13.066 7.88C13.413 7.506 13.665 7.078 13.825 6.594C13.97 6.152 14.025 5.7 13.99 5.236C13.955 4.772 13.832 4.333 13.622 3.919C13.392 3.464 13.078 3.079 12.679 2.761C12.281 2.444 11.835 2.225 11.34 2.102C10.889 1.991 10.433 1.97 9.974 2.04C9.514 2.11 9.085 2.265 8.688 2.506C8.252 2.77 7.891 3.112 7.605 3.533C7.319 3.954 7.133 4.416 7.049 4.918C6.971 5.377 6.985 5.833 7.089 6.286C7.109 6.37 7.107 6.454 7.083 6.536C7.06 6.618 7.017 6.69 6.956 6.751L2.561 11.146C2.381 11.326 2.243 11.533 2.146 11.767C2.049 12.002 2 12.246 2 12.5L2 14L3.793 14C4.126 14 4.411 13.882 4.646 13.646C4.882 13.411 5 13.126 5 12.793L5 11.5C5 11.359 5.048 11.241 5.144 11.144ZM11.207 4.793C11.402 4.988 11.5 5.224 11.5 5.5C11.5 5.776 11.402 6.012 11.207 6.207C11.012 6.402 10.776 6.5 10.5 6.5C10.224 6.5 9.988 6.402 9.793 6.207C9.598 6.012 9.5 5.776 9.5 5.5C9.5 5.224 9.598 4.988 9.793 4.793C9.988 4.598 10.224 4.5 10.5 4.5C10.776 4.5 11.012 4.598 11.207 4.793Z"),
        fill = SolidColor(Color.Black),
    ).build()
}

// Icon(KeyIcon, contentDescription = null) tints it with LocalContentColor.
```

### Android XML

```xml
<!-- res/drawable/ic_key.xml · Gentleface "key" (line-round), MIT. https://gentleface.com/icons/key -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="16dp"
    android:height="16dp"
    android:viewportWidth="16"
    android:viewportHeight="16"
    android:tint="?attr/colorControlNormal">
  <path
      android:fillColor="@android:color/white"
      android:pathData="M1.222 11.385C1.37 11.028 1.58 10.713 1.854 10.439L6.06 6.233C5.978 5.742 5.979 5.248 6.063 4.752C6.171 4.106 6.41 3.513 6.778 2.971C7.146 2.43 7.61 1.989 8.17 1.65C8.681 1.341 9.232 1.141 9.823 1.051C10.414 0.961 11 0.988 11.58 1.132C12.216 1.289 12.79 1.571 13.302 1.979C13.815 2.387 14.219 2.883 14.514 3.467C14.785 4 14.942 4.565 14.987 5.161C15.032 5.757 14.961 6.339 14.775 6.907C14.57 7.529 14.245 8.08 13.8 8.56C13.355 9.04 12.83 9.405 12.225 9.656C11.673 9.885 11.098 10 10.5 10L8 10L8 11.5C8 11.641 7.952 11.759 7.856 11.856C7.759 11.952 7.641 12 7.5 12L6 12L6 12.793C6 13.086 5.944 13.367 5.832 13.638C5.72 13.908 5.561 14.147 5.354 14.354C5.147 14.561 4.908 14.72 4.638 14.832C4.367 14.944 4.086 15 3.793 15L1.5 15C1.359 15 1.241 14.952 1.144 14.856C1.048 14.759 1 14.641 1 14.5L1 12.5C1 12.114 1.074 11.742 1.222 11.385ZM5.144 11.144C5.241 11.048 5.359 11 5.5 11L7 11L7 9.5C7 9.359 7.048 9.241 7.144 9.144C7.241 9.048 7.359 9 7.5 9L10.5 9C10.965 9 11.412 8.911 11.842 8.733C12.312 8.537 12.72 8.253 13.066 7.88C13.413 7.506 13.665 7.078 13.825 6.594C13.97 6.152 14.025 5.7 13.99 5.236C13.955 4.772 13.832 4.333 13.622 3.919C13.392 3.464 13.078 3.079 12.679 2.761C12.281 2.444 11.835 2.225 11.34 2.102C10.889 1.991 10.433 1.97 9.974 2.04C9.514 2.11 9.085 2.265 8.688 2.506C8.252 2.77 7.891 3.112 7.605 3.533C7.319 3.954 7.133 4.416 7.049 4.918C6.971 5.377 6.985 5.833 7.089 6.286C7.109 6.37 7.107 6.454 7.083 6.536C7.06 6.618 7.017 6.69 6.956 6.751L2.561 11.146C2.381 11.326 2.243 11.533 2.146 11.767C2.049 12.002 2 12.246 2 12.5L2 14L3.793 14C4.126 14 4.411 13.882 4.646 13.646C4.882 13.411 5 13.126 5 12.793L5 11.5C5 11.359 5.048 11.241 5.144 11.144ZM11.207 4.793C11.402 4.988 11.5 5.224 11.5 5.5C11.5 5.776 11.402 6.012 11.207 6.207C11.012 6.402 10.776 6.5 10.5 6.5C10.224 6.5 9.988 6.402 9.793 6.207C9.598 6.012 9.5 5.776 9.5 5.5C9.5 5.224 9.598 4.988 9.793 4.793C9.988 4.598 10.224 4.5 10.5 4.5C10.776 4.5 11.012 4.598 11.207 4.793Z"/>
</vector>
```

### Flutter

```dart
// Gentleface "key" (line-round), MIT. https://gentleface.com/icons/key
import 'package:flutter/widgets.dart';

class KeyIcon extends StatelessWidget {
  const KeyIcon({super.key, this.size = 16, this.color});
  final double size;
  final Color? color;

  @override
  Widget build(BuildContext context) => CustomPaint(
        size: Size.square(size),
        painter: _KeyIconPainter(color ?? IconTheme.of(context).color ?? const Color(0xFF000000)),
      );
}

class _KeyIconPainter extends CustomPainter {
  _KeyIconPainter(this.color);
  final Color color;

  @override
  void paint(Canvas canvas, Size size) {
    canvas.scale(size.width / 16, size.height / 16);
    final p = Path()
      ..moveTo(1.222, 11.385)
      ..cubicTo(1.37, 11.028, 1.58, 10.713, 1.854, 10.439)
      ..lineTo(6.06, 6.233)
      ..cubicTo(5.978, 5.742, 5.979, 5.248, 6.063, 4.752)
      ..cubicTo(6.171, 4.106, 6.41, 3.513, 6.778, 2.971)
      ..cubicTo(7.146, 2.43, 7.61, 1.989, 8.17, 1.65)
      ..cubicTo(8.681, 1.341, 9.232, 1.141, 9.823, 1.051)
      ..cubicTo(10.414, 0.961, 11, 0.988, 11.58, 1.132)
      ..cubicTo(12.216, 1.289, 12.79, 1.571, 13.302, 1.979)
      ..cubicTo(13.815, 2.387, 14.219, 2.883, 14.514, 3.467)
      ..cubicTo(14.785, 4, 14.942, 4.565, 14.987, 5.161)
      ..cubicTo(15.032, 5.757, 14.961, 6.339, 14.775, 6.907)
      ..cubicTo(14.57, 7.529, 14.245, 8.08, 13.8, 8.56)
      ..cubicTo(13.355, 9.04, 12.83, 9.405, 12.225, 9.656)
      ..cubicTo(11.673, 9.885, 11.098, 10, 10.5, 10)
      ..lineTo(8, 10)
      ..lineTo(8, 11.5)
      ..cubicTo(8, 11.641, 7.952, 11.759, 7.856, 11.856)
      ..cubicTo(7.759, 11.952, 7.641, 12, 7.5, 12)
      ..lineTo(6, 12)
      ..lineTo(6, 12.793)
      ..cubicTo(6, 13.086, 5.944, 13.367, 5.832, 13.638)
      ..cubicTo(5.72, 13.908, 5.561, 14.147, 5.354, 14.354)
      ..cubicTo(5.147, 14.561, 4.908, 14.72, 4.638, 14.832)
      ..cubicTo(4.367, 14.944, 4.086, 15, 3.793, 15)
      ..lineTo(1.5, 15)
      ..cubicTo(1.359, 15, 1.241, 14.952, 1.144, 14.856)
      ..cubicTo(1.048, 14.759, 1, 14.641, 1, 14.5)
      ..lineTo(1, 12.5)
      ..cubicTo(1, 12.114, 1.074, 11.742, 1.222, 11.385)
      ..close()
      ..moveTo(5.144, 11.144)
      ..cubicTo(5.241, 11.048, 5.359, 11, 5.5, 11)
      ..lineTo(7, 11)
      ..lineTo(7, 9.5)
      ..cubicTo(7, 9.359, 7.048, 9.241, 7.144, 9.144)
      ..cubicTo(7.241, 9.048, 7.359, 9, 7.5, 9)
      ..lineTo(10.5, 9)
      ..cubicTo(10.965, 9, 11.412, 8.911, 11.842, 8.733)
      ..cubicTo(12.312, 8.537, 12.72, 8.253, 13.066, 7.88)
      ..cubicTo(13.413, 7.506, 13.665, 7.078, 13.825, 6.594)
      ..cubicTo(13.97, 6.152, 14.025, 5.7, 13.99, 5.236)
      ..cubicTo(13.955, 4.772, 13.832, 4.333, 13.622, 3.919)
      ..cubicTo(13.392, 3.464, 13.078, 3.079, 12.679, 2.761)
      ..cubicTo(12.281, 2.444, 11.835, 2.225, 11.34, 2.102)
      ..cubicTo(10.889, 1.991, 10.433, 1.97, 9.974, 2.04)
      ..cubicTo(9.514, 2.11, 9.085, 2.265, 8.688, 2.506)
      ..cubicTo(8.252, 2.77, 7.891, 3.112, 7.605, 3.533)
      ..cubicTo(7.319, 3.954, 7.133, 4.416, 7.049, 4.918)
      ..cubicTo(6.971, 5.377, 6.985, 5.833, 7.089, 6.286)
      ..cubicTo(7.109, 6.37, 7.107, 6.454, 7.083, 6.536)
      ..cubicTo(7.06, 6.618, 7.017, 6.69, 6.956, 6.751)
      ..lineTo(2.561, 11.146)
      ..cubicTo(2.381, 11.326, 2.243, 11.533, 2.146, 11.767)
      ..cubicTo(2.049, 12.002, 2, 12.246, 2, 12.5)
      ..lineTo(2, 14)
      ..lineTo(3.793, 14)
      ..cubicTo(4.126, 14, 4.411, 13.882, 4.646, 13.646)
      ..cubicTo(4.882, 13.411, 5, 13.126, 5, 12.793)
      ..lineTo(5, 11.5)
      ..cubicTo(5, 11.359, 5.048, 11.241, 5.144, 11.144)
      ..close()
      ..moveTo(11.207, 4.793)
      ..cubicTo(11.402, 4.988, 11.5, 5.224, 11.5, 5.5)
      ..cubicTo(11.5, 5.776, 11.402, 6.012, 11.207, 6.207)
      ..cubicTo(11.012, 6.402, 10.776, 6.5, 10.5, 6.5)
      ..cubicTo(10.224, 6.5, 9.988, 6.402, 9.793, 6.207)
      ..cubicTo(9.598, 6.012, 9.5, 5.776, 9.5, 5.5)
      ..cubicTo(9.5, 5.224, 9.598, 4.988, 9.793, 4.793)
      ..cubicTo(9.988, 4.598, 10.224, 4.5, 10.5, 4.5)
      ..cubicTo(10.776, 4.5, 11.012, 4.598, 11.207, 4.793)
      ..close();
    canvas.drawPath(p, Paint()..color = color);
  }

  @override
  bool shouldRepaint(_KeyIconPainter old) => old.color != color;
}
```
