Dec 28, 2021 
useMousetrap()
I've been messing around with a React implementation of The Lounge lately (for no real reason except that I can) and wanted a functional way to use Mousetrap, which TL already uses.  The below hook let me replace the Vue use of Mousetrap (which was pretty much vanilla JS) in a React-like fashion. For bonus typing, add @types/mousetrap to your project.
Usage is pretty simple:
useMousetrap("escape", (evt, combo) => {
    evt.preventDefault
}, "keypress")
import mousetrap from "mousetrap"
import { useEffect, useRef } from "react"
const useMousetrap = (
    handlerKey: string | string[],
    handlerCallback: (evt: KeyboardEvent, combo: string) => void,
    evtType?: "keypress" | "keydown" | "keyup",
) => {
    let actionRef = useRef(handlerCallback)
    useEffect(() => {
        mousetrap.bind(
            handlerKey,
            (evt: KeyboardEvent, combo: string) => {
                typeof actionRef.current === "function" && actionRef.current(evt, combo)
            },
            evtType,
        )
        return () => {
            mousetrap.unbind(handlerKey)
        }
    }, [evtType, handlerKey])
}
export default useMousetrap