KeyCodes

1.0.3

AppKit Carbon key codes to UIKey-compatible enums
ChimeHQ/KeyCodes

What's New

v1.0.3

2024-07-12T15:28:16Z
  • keyModifierFlags now works for all event types

Full Changelog: 1.0.2...1.0.3

Build Status Platforms Matrix

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.

Description

  • Swift Tools 5.8.0
View More Packages from this Author

Dependencies

  • None
Last updated: Wed May 14 2025 11:48:24 GMT-0900 (Hawaii-Aleutian Daylight Time)