Initial FocusFixer implementation

Menu-bar utility that fixes cross-display keyboard focus loss: a
listen-only CGEvent tap locates the window under the cursor and
reasserts app activation + AX focus on it, with debounce, tap
auto-recovery, and an Accessibility permission gate.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
sttlab-tech
2026-08-10 12:02:29 +02:00
commit 561a547b70
18 changed files with 1411 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
name: FocusFixer
options:
minimumXcodeGenVersion: "2.38.0"
configs:
Debug: debug
Release: release
settings:
base:
SWIFT_VERSION: "5.9"
MACOSX_DEPLOYMENT_TARGET: "13.0"
CODE_SIGN_STYLE: Automatic
ENABLE_HARDENED_RUNTIME: NO
targets:
FocusFixer:
type: application
platform: macOS
deploymentTarget: "13.0"
sources:
- path: FocusFixer
excludes:
- Info.plist
settings:
base:
PRODUCT_NAME: FocusFixer
PRODUCT_BUNDLE_IDENTIFIER: com.local.focusfixer
INFOPLIST_FILE: FocusFixer/Info.plist
GENERATE_INFOPLIST_FILE: NO
FocusFixerTests:
type: bundle.unit-test
platform: macOS
deploymentTarget: "13.0"
sources:
- path: FocusFixerTests
dependencies:
- target: FocusFixer
settings:
base:
GENERATE_INFOPLIST_FILE: YES
BUNDLE_LOADER: "$(TEST_HOST)"
TEST_HOST: "$(BUILT_PRODUCTS_DIR)/FocusFixer.app/Contents/MacOS/FocusFixer"
schemes:
FocusFixer:
build:
targets:
FocusFixer: all
FocusFixerTests: [test]
run:
config: Debug
test:
config: Debug
gatherCoverageData: false
targets:
- FocusFixerTests