Repo // Add HangarRash_SwiftyCapsLockToggler.
This commit is contained in:
parent
b7c914a611
commit
6c371b844f
|
@ -0,0 +1 @@
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
// Ref: https://stackoverflow.com/a/75870807/4162914
|
||||
|
||||
#import <IOKit/IOKitLib.h>
|
||||
#import <IOKit/hid/IOHIDBase.h>
|
|
@ -0,0 +1,33 @@
|
|||
// swift-tools-version:5.3
|
||||
// The swift-tools-version declares the minimum version of Swift required to build this package.
|
||||
|
||||
import PackageDescription
|
||||
|
||||
let package = Package(
|
||||
name: "SwiftyCapsLockToggler",
|
||||
platforms: [
|
||||
.macOS(.v11),
|
||||
],
|
||||
products: [
|
||||
// Products define the executables and libraries a package produces, making them visible to other packages.
|
||||
.library(
|
||||
name: "SwiftyCapsLockToggler",
|
||||
targets: ["SwiftyCapsLockToggler"]
|
||||
),
|
||||
],
|
||||
targets: [
|
||||
// Targets are the basic building blocks of a package, defining a module or a test suite.
|
||||
// Targets can depend on other targets in this package and products from dependencies.
|
||||
.target(
|
||||
name: "CapsLockToggler",
|
||||
path: "Framework",
|
||||
cSettings: [
|
||||
.headerSearchPath("include"),
|
||||
]
|
||||
),
|
||||
.target(
|
||||
name: "SwiftyCapsLockToggler",
|
||||
dependencies: ["CapsLockToggler"]
|
||||
),
|
||||
]
|
||||
)
|
|
@ -0,0 +1,39 @@
|
|||
// Ref: https://stackoverflow.com/a/75870807/4162914
|
||||
|
||||
// #import <IOKit/IOKitLib.h>
|
||||
// #import <IOKit/hid/IOHIDBase.h>
|
||||
|
||||
import CapsLockToggler
|
||||
|
||||
public enum CapsLockToggler {
|
||||
public static func toggle() {
|
||||
let thePort: mach_port_t = {
|
||||
if #available(macOS 12.0, *) {
|
||||
return kIOMainPortDefault
|
||||
}
|
||||
return kIOMasterPortDefault
|
||||
}()
|
||||
let ioService: io_service_t = IOServiceGetMatchingService(thePort, IOServiceMatching(kIOHIDSystemClass))
|
||||
var ioConnect: io_connect_t = 0
|
||||
IOServiceOpen(ioService, mach_task_self_, UInt32(kIOHIDParamConnectType), &ioConnect)
|
||||
var state = false
|
||||
IOHIDGetModifierLockState(ioConnect, Int32(kIOHIDCapsLockState), &state)
|
||||
state.toggle()
|
||||
IOHIDSetModifierLockState(ioConnect, Int32(kIOHIDCapsLockState), state)
|
||||
IOServiceClose(ioConnect)
|
||||
}
|
||||
|
||||
public static func turnOff() {
|
||||
let thePort: mach_port_t = {
|
||||
if #available(macOS 12.0, *) {
|
||||
return kIOMainPortDefault
|
||||
}
|
||||
return kIOMasterPortDefault
|
||||
}()
|
||||
let ioService: io_service_t = IOServiceGetMatchingService(thePort, IOServiceMatching(kIOHIDSystemClass))
|
||||
var ioConnect: io_connect_t = 0
|
||||
IOServiceOpen(ioService, mach_task_self_, UInt32(kIOHIDParamConnectType), &ioConnect)
|
||||
IOHIDSetModifierLockState(ioConnect, Int32(kIOHIDCapsLockState), false)
|
||||
IOServiceClose(ioConnect)
|
||||
}
|
||||
}
|
|
@ -14,6 +14,7 @@ let package = Package(
|
|||
],
|
||||
dependencies: [
|
||||
.package(path: "../DanielGalasko_FolderMonitor"),
|
||||
.package(path: "../HangarRash_SwiftyCapsLockToggler"),
|
||||
.package(path: "../Jad_BookmarkManager"),
|
||||
.package(path: "../Qwertyyb_ShiftKeyUpChecker"),
|
||||
.package(path: "../vChewing_CandidateWindow"),
|
||||
|
@ -50,6 +51,7 @@ let package = Package(
|
|||
.product(name: "Shared", package: "vChewing_Shared"),
|
||||
.product(name: "ShiftKeyUpChecker", package: "Qwertyyb_ShiftKeyUpChecker"),
|
||||
.product(name: "SwiftExtension", package: "vChewing_SwiftExtension"),
|
||||
.product(name: "SwiftyCapsLockToggler", package: "HangarRash_SwiftyCapsLockToggler"),
|
||||
.product(name: "Tekkon", package: "vChewing_Tekkon"),
|
||||
.product(name: "TooltipUI", package: "vChewing_TooltipUI"),
|
||||
.product(name: "Uninstaller", package: "vChewing_Uninstaller"),
|
||||
|
|
|
@ -185,6 +185,7 @@
|
|||
5B963CA128D5C22D00DCEE88 /* vChewing_SwiftExtension */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_SwiftExtension; path = Packages/vChewing_SwiftExtension; sourceTree = "<group>"; };
|
||||
5B98114628D6198000CBC605 /* vChewing_PinyinPhonaConverter */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_PinyinPhonaConverter; path = Packages/vChewing_PinyinPhonaConverter; sourceTree = "<group>"; };
|
||||
5BA8C30128DEFE4F004C5CC4 /* vChewing_CandidateWindow */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_CandidateWindow; path = Packages/vChewing_CandidateWindow; sourceTree = "<group>"; };
|
||||
5BAD67E12ADAB62D005A4842 /* HangarRash_SwiftyCapsLockToggler */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = HangarRash_SwiftyCapsLockToggler; path = Packages/HangarRash_SwiftyCapsLockToggler; sourceTree = "<group>"; };
|
||||
5BB802D927FABA8300CF1C19 /* SessionCtl_Menu.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = SessionCtl_Menu.swift; sourceTree = "<group>"; tabWidth = 2; usesTabs = 0; };
|
||||
5BBBB75D27AED54C0023B93A /* Beep.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; path = Beep.m4a; sourceTree = "<group>"; };
|
||||
5BBBB75E27AED54C0023B93A /* Fart.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; path = Fart.m4a; sourceTree = "<group>"; };
|
||||
|
@ -443,6 +444,7 @@
|
|||
children = (
|
||||
5BDB7A3128D47587001AC277 /* DanielGalasko_FolderMonitor */,
|
||||
5BFC63C428D487AE004A77B7 /* Fuziki_NSAttributedTextView */,
|
||||
5BAD67E12ADAB62D005A4842 /* HangarRash_SwiftyCapsLockToggler */,
|
||||
5BDB7A3028D47587001AC277 /* Jad_BookmarkManager */,
|
||||
5BDB7A3428D47587001AC277 /* Qwertyyb_ShiftKeyUpChecker */,
|
||||
5BDB7A3528D47587001AC277 /* RMJay_LineReader */,
|
||||
|
|
Loading…
Reference in New Issue