[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#44973: Add a macOS global hotkey function
From: |
Alan Third |
Subject: |
bug#44973: Add a macOS global hotkey function |
Date: |
Mon, 21 Dec 2020 08:12:04 +0000 |
On Sun, Dec 20, 2020 at 04:40:37PM -0800, j@mremus.net wrote:
> Hi Lars,
>
> I'm pretty close to having a patch ready, but I'm stuck in one key spot. I
> don't know if anyone on the list could help?
>
> After the user registers a hotkey, and when they press the hotkey, MacOS
> will run the code below. On the line "RUN_SOME_ELISP_FUNCTION", I would
> expect some elisp function to be run (e.g. 'emacs-version').
>
> But no matter what I do, it always crashes the program. I think my first
> problem is not knowing how to call elisp (run_hooks, safe_call, etc?)
> correctly, but second, I suspect if this is crashing due to a threading
> issue.
>
> handler = [NSEvent
> addGlobalMonitorForEventsMatchingMask:(NSEventMaskKeyDown)
> handler:^(NSEvent *event){
> if (event.modifierFlags & modifier)
> if([event.charactersIgnoringModifiers characterAtIndex:0] ==
> vkey) {
> RUN_SOME_ELISP_FUNCTION
> [[NSApp mainWindow] makeKeyAndOrderFront:NSApp];
> }
> }
> }];
I think you probably want to send an event to Emacs, that way a user
can bind it to anything they like. Look at, say, [EmacsApp openFile:]
for how do that.
One potential problem with your approach is that we don't accept code
using Objective C blocks as it's incompatible with GCC. Unless that
policy has changed?
--
Alan Third