SkillAgentSearch skills...

KeyCodes

AppKit Carbon key codes to UIKey-compatible enums

Install / Use

/learn @ChimeHQ/KeyCodes
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align="center">

Build Status Platforms Matrix

</div>

KeyCodes

Versions of UIKey, UIKeyboardHIDUsage, and UIKeyModifierFlags that work with AppKit's NSEvent. No need for Carbon.HIToolbox. Aside from being a nicer API to work with, these versions should make it possible to more easily write source-compatible AppKit/UIKit keyboard handling code. Yes, this is basically a gigantic switch statement.

These structures are particularly helpful for writing tests. Constructing NSEvent instances by hand is a pain.

Usage

import Carbon.HIToolbox

func withoutKeyCodes(_ event: NSEvent) {
    let code = Int(event.keyCode)
    
    if code == kVK_Return {
        doThing()
    }

    if event.modifierFlags.deviceIndependentOnly.contains(.control) {
        controlKeyActive()
    }
}

import KeyCodes

func withKeyCodes(_ event: NSEvent) {
    if event.keyboardHIDUsage == .keyboardReturn {
        doThing()
    }

    // UIKeyModifierFlags-compatible
    if event.keyModifierFlags.contains(.control) {
        controlKeyActive()
    }
}

Integration

dependencies: [
    .package(url: "https://github.com/ChimeHQ/KeyCodes", from: "0.1.1")
]

Contributing and Collaboration

I would love to hear from you! Issues or pull requests work great. A Matrix space is also available for live help, but I have a strong bias towards answering in the form of documenation.

I prefer collaboration, and would love to find ways to work together if you have a similar project.

I prefer indentation with tabs for improved accessibility. But, I'd rather you use the system you want and make a PR than hesitate because of whitespace.

By participating in this project you agree to abide by the Contributor Code of Conduct.

View on GitHub
GitHub Stars40
CategoryDevelopment
Updated4mo ago
Forks3

Languages

Swift

Security Score

92/100

Audited on Dec 2, 2025

No findings