# GMMK Pro Standard Layout for macOS by zvuc
As you may know, Glorious does not (yet) provide their Glorious Core software for macOS; so with stock firmware, there aren't any ways to customize layouts on the hardware level unless you turn to software-based override solutions such as [Karabiner Elements](https://karabiner-elements.pqrs.org/). This is my attempt to try to create the most macOS-like experience on the GMMK Pro, taking close notes from Apple's Magic Keyboard, also referencing code from other community keymaps.
## Keymap
Layer 0
Layer 1 (Hold Fn)
Layer 2 (Togglable alternative function row layout by pressing Fn+F)
## Notable differences from stock key layout for Windows:
- Delete key placed right next to backspace (under rotary encoder)
- F13 key for the bottommost row (Assign it to a shortcut you like in macOS preferences! [For example: "Emoji & Symbols" to bring up the emoji input popup instantly](https://user-images.githubusercontent.com/2870726/132237211-7e13c156-96a8-4a91-b215-28d310228feb.png))
- Eject key for the last key in function row: Needed for macOS native global "Sleep" hotkey (⌘⌥Eject)
## Notable Features
- VIA support
- Rotary Encoder support (Defaults to stock behavior Volume Up/Down)
- Standard order for macOS modifier keys:
* Left: ⌃ Control⌥ Option⌘ Command
* Right: ⌘ Command⌥ OptionFn
- Apple Magic Keyboard-like Function Row Mode (Toggle with Fn+F)
* F1: Decrease display brightness
* F2: Increase display brightness
* F3: Mission Control
* F4: Launchpad
* F5: Decrease keyboard backlight brightness
* F6: Increase keyboard backlight brightness
* F7: (none)
* F8: (none)
* F9: Media Rewind
* F10: Media Play/Pause
* F11: Media Fast Forward
* F12: (none)
> #### NOTE
> - Media key mappings follow Apple Magic Keyboard except F8 thru F12, where keys have been shifted by one to the right. It's because I wanted to get over the awkward gap between F8 and F9 that the GMMK Pro has—and also because we don't need dedicated keys for volume control when we have the more convenient rotary knob.
> - To access standard F1 - F12 keys, press the Function keys while holding Fn.
> - If you're planning to use Karabiner Elements, use the standard Function row mode (F1 - F12) because Karabiner Elements always overrides function keys even if you want to just use simple or complex modifications, and it doesn't catch custom keys like Mission Control, Launchpad or Eject. (Eject is mapped as F24 so you can replace it with 'Eject' within Karabiner.)
## RGB Lighting
- Retains Glorious stock firmware key mappings for control
* FnUp / FnDown: Cycle presets
* FnLeft / FnRight: Adjust speed
* FnW / FnS: Adjust brightness
- Quickly switch to popular presets:
* Fn` : Solid color (no animation)
* Fn1 : Solid duotone (no animation) - ShiftKnob to change secondary color.
* Fn2 : Vertical gradient - ShiftKnob to change secondary color.
* Fn3 : "Jellybean Raindrops"
* Fn4 : Horizontal wipe with white backlight
* Fn5 : Horizontal wipe
* Fn6 : Single color pinwheel
* Fn7 : Horizontal rainbow
* Fn8 : Rainbow pinwheel
* Fn9 : Breathing
* Fn0 : Reactive (light up on keypress)
* Fn- : "Digital Rain"
* Fn= : "Heatmap"
- RGB turns off after 20 minutes of inactivity
- RGB turns off when USB is suspended / enters sleep
- Caps Lock toggle indicator (Caps Lock key and side lights will turn red)
- Easy RGB control using Rotary Encoder
- Control+Rotate Knob: Adjust hue
- Option+Rotate Knob: Adjust saturation
- Command+Rotate Knob: Adjust brightness
> All latest QMK effects [(41 as of now)](https://beta.docs.qmk.fm/using-qmk/hardware-features/lighting/feature_rgb_matrix#rgb-matrix-effects-id-rgb-matrix-effects) are enabled by default and will apply in order when cycling through using FnUp / FnDown. You can disable specific effects by uncommenting (remove the `//` at the beginning of line) respective lines (ex: `#define DISABLE_RGB_MATRIX_BREATHING`) in `qmk_firmware/keyboards/gmmk/pro/ansi/keymaps/zvuc/config.h` then recompiling the firmware.
## Other Features
- 1000hz polling rate
- Short DEBOUNCE time (5 ms)
- Per-key debounce algorithm (`sym_defer_pk`)
- NKRO toggle (Fn+N)
## Warning regarding VIA support
When observing this keyboard firmware in VIA, some custom-implemented keys such as Mission Control/Launchpad and RGB preset shortcuts appear as keycodes such as `0x5d62`. **These must not be modified!** There is no way to get their default functionality back unless you re-flash the firmware through QMK Toolbox.
## Download pre-compiled firmware binary file
[Download BIN file from here](https://github.com/zvuc/qmk_firmware/releases/tag/zvuc-1.0.1)