npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@kcuf/rc-keyboard-mac

v0.3.2

Published

A mac book keyboard react component.

Downloads

597

Readme

@kcuf/rc-keyboard-mac

@kcuf/rc-keyboard-mac

Yet another MacKeyboard React component, inspired by @uiw/react-mac-keyboard with some improvements and modifications:

  1. Listen to document keydown events and reflect status by default
  2. Can control active keys and modifiers
  3. Use styled-components as CSS solution, reduced CSS size by using data attributes selector instead of nth selector, and reduced hard coded sizing in CSS
  4. Can tell Left or Right Control/Option/Shift/Meta, and the difference between Backspace and Delete
  5. Displays event details in the space bar by default
  6. Ditched deprecated keyCode for code
  7. An onKeyPress event which can reflect Shift state

How to Use

import Keyboard from '@kcuf/rc-keyboard-mac';

// default
<Keyboard />

...that easy.

Demos

Edit @kcuf/rc-keyboard-mac

Props

All props are optional.

interface KeyboardProps extends HTMLAttributes<HTMLDivElement>, Partial<IKeyboardInfo> {
  /**
   * By default, the component will listen to keydown event on document, and refect the status in the keyboard.
   * 
   * 是否监听键盘事件,默认 `true`,如果 `false`,可以通过 `codes` 和 `capsLock` 进行控制。
   */
  listen?: boolean;
  /**
   * Controllable active codes, ref https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code.
   * 
   * 受控的 `activeCodes`
   */
  activeCodes?: EKeyboardCode[];
  /**
   * Whether Control / Alt / Shift / Meta / Fn can stay pressed before next click.
   * 
   * 是否对 Control / Alt / Shift / Meta / Fn 等键记录按下状态。
   */
  activeModifiers?: boolean | IKeyboardModifiers;
  /**
   * Wheter (default true) to display current keydown details in the space key, the info will disappear automatically after 3s.
   * 
   * 将键盘事件的信息显示在空格键上,3s 后自动消失,默认 `true`。
   * 
   * 注意,Mac 键盘在 CapsLock 的时候,按住 Shift 不会返回小写的 `key`,这里也不作纠正,如实反应。
   */
  detailsInSpace?: boolean;
  /**
   * Callback when click a key in the UI, can reflect whether Shift is on.
   * 
   * 点击按钮的回调,当 `capsLock` 受控时,能够根据 `Shift` 正确返回大小写的 `key` 值,但不会根据 `Alt` 做出反应。
   */
  onKeyPress?(key: string, code: EKeyboardCode): void;
  /**
   * With `props.activeModifiers` in object format, can make it controllable.
   * 
   * 配合 `props.activeModifiers` 的对象写法,可以实现受控。
   */
  onActiveModifiersChange?(activeModifiers: IKeyboardModifiers): void;
}

Known Issues

  • Fn and F11 cannot be listened