-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Apple "Globe key" modifier (Fn key) #947
Comments
So it is not an 'issue' as Apple wants to make it a proprietary key (maybe you need a license to implement it, as it seems like OS checks if the keyboard supports globe or not). I also have no problem using caps lock instead of globe. |
I find the main problem with this workaround is the inability to use capslock in modifier functions in the keymap. For example: |
In QMK, there's a patch that enables the Apple fn |
I am in full agreement with the QMK devs, we won't ever imitate a company's VID to enable a feature. We would need to petition Apple to somehow add the VID we use to their allowed list, before bothering enhancing ZMK's HID layer to support this. |
They're over 15% of the market. Is there any legal reason we can't support this? It'd be unfortunate to punish users just because the OS vendor doesn't play well with others. |
You can work around this by binding an unused key and remapping using |
Users are welcome to override the VID and PID for their local builds. The project itself won't ever do this by default, that would open us up to lawsuits from Apple or the USB-IF, in theory. The better way is to petition Apple to add our IDs, or change their software. |
How does Keychron get away with this? |
Seems to be fn2 on all my Keychron devices. |
Not yet sorted? |
There is a workaround for using capslock in modifier functions? |
I facing the same issues...my workaround to use F1 etc. (my default are on my MacBooks F1 with FN key) to switch it on the OS macOS Ventura |
I'm using the function key workaround as well, but I wish we could support the globe character so that I could set consistent keyboard shortcuts between my laptop's keyboard and my Desktop keyboard. |
Hey all, as Pete stated a year ago – "The project itself won't ever do this by default, that would open us up to lawsuits from Apple or the USB-IF, in theory." |
@petejohanson |
One could use a macro for that:
|
@petejohanson What are the next steps for starting this petition? |
This issue is definitely not high on my list of priorities, so whoever is motivated to do the above is welcome to. |
Really? Are you the first person in the world to figure this out? If so, could you please elaborate? If not, where did you find how to do this? |
It's the 0x29D usage ID, I just added it to keys.h. it is specified in the apple accessory device specifications. There is no mention of the Fn key in said specification. It either uses the same code as the globe key or a proprietary method apple don't publish |
I just added that line and then used it in my config(kinesis360). the key did not register in karabiner eventviewer |
Did you enable CONFIG_ZMK_HID_CONSUMER_REPORT_USAGES_FULL=y in adv360_left_defconfig |
While it still does not register in Karabiner Event Viewer as Should anyone want to reproduce, follow these steps:
However it only seems to work if I have the keyboard connected via cable. When I use the keyboard connected via bluetooth, it just doesn't work. So I guess there's still something else to change in keyboard settings. Still, many thanks for that, @ReFil ! I guess that we're getting closer to a solution. |
I tried with CONFIG_ZMK_HID_CONSUMER_REPORT_USAGES_FULL=y , still it did not work. It does not get registered... with wire or bluetooth |
Complete shot in the dark: do you have NKRO enabled? |
Thanks, if I understand correctly, I can just use the GLOBE code if I use GitHub actions for building the firmware |
Yes, unless you changed |
@ReFil very cool! Will this also be added to the Adv360 repo? |
Yes, this fix will be merged in with the 360 pro's next minor update |
On Ipad the globe gets registered, but on mac it does nothing for me... When I disable "modify events" in karabiner for my external keyboard(kinesis 360) then I see in unknown events in karabiner something(see image). The actual fn-key on my mac gets registered as
|
What version of macOS are you using? It seems that your fn key is using the older custom usage page method |
That's odd, is the hardware recent too? I was able to get it to bring up the emoji screen on an m1 macbook pro which was the same thing the globe key on the integrated keyboard did. If your hardware is older it might explain it |
that makes me hopeful |
Must admit i'm not too versed in apple stuff, I dont own or use a mac myself so had to borrow one for testing this. Everything there looks correct so i'm not sure why it wouldn't work, especially when it works on iPads |
Is it doing anything in the OS? as per this comment karabiner might not be able to detect it. Bear in mind it's possible the key is disabled in the MacOS keyboard settings |
my normal built in keyboard opens emoji panel, but kinesis does not open anything. On my second mac(macbook 16 2019) the fn keycode is the same
|
is replacing 0x029d with 0x00ff enough? how can I add this myself to test whether it works? |
Implementing the dedicated usage apple fn key is not trivial, are you trying this over USB or bluetooth? |
both. I could do the same thing you did in your PR or do you mean even more work than that? |
It would be a lot more work to implement, where's your config repo? I can have a look to ensure the keyboard is correctly configured? |
at first glance this line shouldn't be there, if you're using full consumer usage it supercedes basic https://github.com/arabshapt/Adv360-Pro-ZMK/blob/1f5cc43ae89a16c9079f128913104f81f2520c9a/config/boards/arm/adv360/adv360_left_defconfig#L64C27-L64C27 |
thank you, I commented it out) |
It seems like the GLOBE keycode does not provide the full functionality of the globe/fn keys present on official apple keyboards, but does provide some of the functionality, With this in mind it might be worth reopening the issue or opening a new issue specifically about the Fn functionality |
I can confirm that the GLOBE keycode here is more limited than actual GLOBE key from Apple. I tried it on iPad Pro 12.9" 6th gen model with iPadOS 17.0.3, and it is working as expected (e.g. GLOBE key changes input sources.) But on the Macbook Pro 16" 2021 model with macOS Sonoma 14.0 (23A344), the GLOBE has no effects (e.g. it does not change input sources.) Remapping in System Preferences > Keyboard > Keyboard Shortcuts... > Modifer Keys > Caps Lock to Globe gives full Globe/Fn functionality instead. Also, in order to use the GLOBE keycode on Advantage 360, you need to follow #947 (comment) and set |
Facing this problem on Monterey 12.5, Air m2 2023, Glove80, configuring via their online tool. Any suggestions? The key seems totally unresponsive, even fn+bksp does not work. Combinations like fn+c, fn+e obviously don't work as well. |
The keycode only works for the globe function, not the fn function of the key |
@ReFil FWIW globe function does not work for me as well. It does not toggle the languages either. FOR ANYONE ELSE STOPPING BY: |
Just to confirm, i've did what @r4zendev suggested, this works to have "fn" on any custom keyboard. |
Apple now use an additional modifier key: "Globe"
The Globe key can be seen in the bottom left of this MacBook Air keyboard:
(The Globe key is now also standard on iPad keyboards, and Apple's new external keyboards for other Macs.)
The problem
It's not possible to send the Globe key with ZMK, but the Globe key is used heavily in recent versions of Apple operating systems.
Here are some keyboard shortcuts in iPadOS 15 that use the Globe key:
I believe the Globe key is a repurpose/rebrand of Apple's own "Fn key" which has been around for a while. Apple's Fn key has its own keycode which is not usually available in custom keyboard firmware:
More information about the Apple Fn key can be found at https://beta.docs.qmk.fm/faqs/faq_keymap#fn-key-on-macos.
Workaround
Previously, when this key was purely
Fn
, it was possible to work around the inability to sendFn
+8
for "Play/Pause" by instead sending the desiredC_PLAY_PAUSE
. However, these kinds of workarounds do not apply to Globe as there's no keycode for the desired result (e.g. "Tile Window Left").Fortunately, Apple provides the ability to remap modifiers at the Operating System level on all their devices - it is possible for ZMK to send Caps Lock (
&kp CAPS
) and for the Apple OS to treat it as the Globe key.Note that on an iOS/iPadOS device, accessing this settings pane can be troublesome (but not impossible) as discussed in #378.
The text was updated successfully, but these errors were encountered: