I want to be able to simulate mouse clicks, moves, and drags within my own app. I can do that using CGEventPost, but that requires accessibility permission, which seems silly to require when I'm not trying to control another app. An alternative is to create mouse NSEvents and use -[NSApplication postEvent:atStart:]. By that approach, I am able to click a button and watch it highlight and unhighlight, but the mouse cursor never moves and the pressedMouseButtons class property of NSEvent never changes. Is there a better way to simulate mouse events without requiring accessibility permission?
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I replied to this thread a couple of hours ago, but the recent post list, sorted by Last Update, does not show it, and my watch list shows an update date based on a previous reply.
I have an overloaded function, one version with a BOOL parameter and one with a bool parameter. It gives me a redefinition error when compiling for Apple Silicon but not when compiling for Intel.
If I use -[NSView dataWithPDFInsideRect:] to create a PDF from an NSTextView, I get a single-page PDF with stuff past the bottom cut off. What do I need to do to get pagination to happen? Would embedding the NSTextView in an NSScrollView help?
Is there a correct way to archive a dynamic library in Xcode? When I try it, Xcode produces a "Generic Xcode Archive", and there is no option to notarize. The article TN3110: Resolving generic Xcode archive issue seems to be all about archiving an app.
Why is it that I can open a symbolic link, but can't read it? I am aware that I can get the contents of a symlink file using the readlink function, but still, it seems like this ought to work. Here's example code:
#include <iostream>
#include <unistd.h>
#include <fcntl.h>
int main(int argc, const char * argv[])
{
// Make sure there is not already a file where we will create the link
unlink( "/tmp/ReadSymLink-test" );
// Create a symlink
int result = symlink( "../usr", "/tmp/ReadSymLink-test");
int err;
if (result == 0)
{
std::cout << "created file /tmp/ReadSymLink-test\n";
}
else
{
err = errno;
std::cerr << "symlink failed with error " << err << "\n";
return 1;
}
// Open it for reading
int fd = open( "/tmp/ReadSymLink-test", O_RDONLY | O_SYMLINK );
if (fd < 0)
{
err = errno;
std::cerr << "open failed with error " << err << "\n";
return 2;
}
std::cout << "open succeeded\n";
// and read it
char buffer[200];
ssize_t bytesRead = read( fd, buffer, sizeof(buffer) );
if (bytesRead < 0)
{
err = errno;
std::cerr << "read failed with error " << err << "\n";
return 2;
}
else
{
buffer[ bytesRead ] = '\0';
std::cout << "read of symlink result: " << buffer << "\n";
}
return 0;
}
The result, running under Sonoma 14.2 (beta) is
created file /tmp/ReadSymLink-test
open succeeded
read failed with error 1
I'm getting occasional crashes, which have not happened while running under a debugger and I haven't figured out how to reproduce. I wonder if anyone can help me glean more information from a crash report. Here's the main part. This particular report if from macOS 14.2 beta, but I've also seen it from 14.1.1.
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000018
Exception Codes: 0x0000000000000001, 0x0000000000000018
VM Region Info: 0x18 is not in any region. Bytes before following region: 140723250839528
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
UNUSED SPACE AT START
--->
mapped file 7ffcaf60c000-7ffcd7f48000 [649.2M] r-x/r-x SM=COW ...t_id=b7394f27
Error Formulating Crash Report:
PC register does not match crashing frame (0x0 vs 0x1022A3630)
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 <translation info unavailable> 0x1022a3630 ???
1 libsystem_platform.dylib 0x7ff819d0b393 _sigtramp + 51
2 AppKit 0x7ff81d3549a6 -[NSControl _setWindow:] + 59
3 AppKit 0x7ff81d413c19 -[NSSegmentedControl _setWindow:] + 42
4 AppKit 0x7ff81defd3be __21-[NSView _setWindow:]_block_invoke.391 + 324
5 AppKit 0x7ff81d33a62c -[NSView _setWindow:] + 1886
6 AppKit 0x7ff81defd3be __21-[NSView _setWindow:]_block_invoke.391 + 324
7 AppKit 0x7ff81d33a62c -[NSView _setWindow:] + 1886
8 AppKit 0x7ff81d572d08 -[NSWindow dealloc] + 922
9 MyApp 0x1011b6b81 -[JWWindow dealloc] (in MyApp) (JWWindow.m:37)
10 Foundation 0x7ff81b3d179c _NSKVOPerformWithDeallocatingObservable + 151
11 Foundation 0x7ff81acc6d54 NSKVODeallocate + 150
12 libobjc.A.dylib 0x7ff8199189d7 AutoreleasePoolPage::releaseUntil(objc_object**) + 169
13 libobjc.A.dylib 0x7ff819915cf0 objc_autoreleasePoolPop + 235
14 CoreFoundation 0x7ff819d794a1 _CFAutoreleasePoolPop + 22
15 Foundation 0x7ff81ac869ea -[NSAutoreleasePool drain] + 133
16 AppKit 0x7ff81d315694 -[NSApplication run] + 653
17 AppKit 0x7ff81d2e9662 NSApplicationMain + 816
18 MyApp 0x100ef5034 start (in MyApp) + 52
I can see that it involves deallocating a window as part of draining an autorelease pool, but does the presence of _NSKVOPerformWithDeallocatingObservable mean that KVO is involved somehow? And does the note "PC register does not match crashing frame" tell me anything?
When I'm running my Mac app in the Xcode debugger, and it launches a helper app, the helper crashes with a dyld error. This does not happen if I am not debugging.
Termination Reason: Namespace DYLD, Code 1 Library missing
Library not loaded: @rpath/Cal3D.framework/Versions/A/Cal3D
Referenced from: <3C1A67BA-5545-31A2-86C5-77104B0194FE> /Volumes/VOLUME/*/SBEngineLib4.framework/Versions/A/SBEngineLib4
The frameworks SBEngineLib4.framework and Cal3D.framework exist in the main app. The helper app does not contain any frameworks, but does contain dylib versions of those frameworks, which I suppose is confusing things somehow.
I'm trying to download a small data file using NSURLSession, but the completion handler is never called (where "never" means I waited long after the specified timeout).
NSURLSessionConfiguration* config =
NSURLSessionConfiguration.ephemeralSessionConfiguration;
config.timeoutIntervalForResource = 120.0;
config.timeoutIntervalForRequest = 120.0;
NSURLSession* session = [NSURLSession sessionWithConfiguration: config];
[session dataTaskWithURL: inURL
completionHandler:
^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error)
{
...
}];
I'm trying to update some old code that used the deprecated NSURLConnection class, and am using the same URL, so I know that the URL is good.
I just noticed that +[CIPlugIn loadAllPlugIns] has been deprecated since 10.15 (OK, I'm a little slow), along with all the other CIPlugIn methods except for loadNonExecutablePlugIns. I don't see any documentation about what I'm supposed to do instead. What's the deal?
I'm updating some very old code, and it sends an kAESync Apple Event to the Finder to let Finder know that a file has been created or updated. Does this still serve a purpose? I know that Apple Events still exist, but creating the event involves deprecated things like FSRef and AliasHandle.
Possibly related: -[NSWorkspace noteFileSystemChanged:]. The documentation says that it informs the workspace object, so maybe it doesn't inform the Finder, and the documentation also says "Avoid calling this method if possible".
I have an app group to share settings between a main app and a helper. This is accessed using [[NSUserDefaults alloc] initWithSuiteName: @"FDHC2KMZ6V.com.jwwalker.autopairs.suite"]. What's puzzling me is that if I go to Terminal and enter
defaults read FDHC2KMZ6V.com.jwwalker.autopairs.suite
it tells me that the domain does not exist. Is this a bug in the defaults tool, or is there some trick I'm missing?
Yesterday and today, when I try to notarize a Mac app, it fails in the upload stage. And yet Apple's system status page shows a green dot next to Developer ID Notary Service.
I've tried relaunching Xcode and even rebooting the Mac.
Xcode 14.3, macOS 13.4.1
Feedback filed, FB12570950
I'm building a plug-in for an app that I did not create, and I would like to notarize it. I know I can so that using notarytool, but it would be nice if I could do it using Xcode. However, when I archive, it creates a "generic Xcode archive". I've read TN3110: Resolving generic Xcode archive issue. Since the plugin is being created by itself rather than as part of a larger build product, I assume that I should use the SKIP_INSTALL = NO build setting. I am less sure of what to do with the INSTALL_PATH build setting. If I leave it empty, then nothing gets created in the Products folder of the archive. If I set it to some path, then the product is placed in the archive but nested in a subfolder of Products.
The new environment constraints talk about a responsible process versus the launching process, but I'm not clear on the difference, and haven't been able to find a definition of a responsible process.