Zuoya GMK67 Fn Row fix on Manjaro Linux
Shamal Lakshan

The problem

A common problem faced by GMK67 users when using Linux, is that the fn + 1 key combination which is supposed to produce the output f1 will produce a screen brightness decrease operation. And also, If you were to try and change the physical switch on the GMK67 to Mac mode it will fix the Fn row. But, it will alter the modifier keys. For example the Super / Win key will now become the Alt and the Alt will become the Super / Win key.

Solutions

After researching many solutions and multiple failures in solving this issue I was able to solve it. The post I initiallty used. Although the solution in the post itself didn’t work for me personally, one of the comments in the above post helped me solve this issue.

How I solved it.

  • Open the file /sys/module/hid_apple/parameters/fnmode in a text editor

  • Replace it’s value to 0s.

  • As mentioned in the post the above solution will fix this temporarily.

  • To make the change permanent do the following:

  • Open the file /etc/modprobe.d/hid_apple.conf in a text editor

  • Add / Edit this line

    1
    options hid_apple fnmode=0
  • Add the hid_apple.conf to the configuration of mkinitcpio.

  • You can do it by opening /etc/mkinitcpio.conf in a text editor.

  • You’ll see a file like:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run. Advanced users may wish to specify all system modules
# in this array. For instance:
# MODULES=(usbhid xhci_hcd)
MODULES=()

# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image. This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=()

# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way. This is useful for config files.
FILES=(/etc/modprobe.d/hid_apple.conf)

# HOOKS
# This is the most important setting in this file. The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
## This setup specifies all modules in the MODULES setting above.
## No RAID, lvm2, or encrypted root is needed.
# HOOKS=(base)
#
## This setup will autodetect all modules for your system and should
## work as a sane default
# HOOKS=(base udev autodetect modconf block filesystems fsck)
#
## This setup will generate a 'full' image which supports most systems.
## No autodetection is done.
# HOOKS=(base udev modconf block filesystems fsck)
#
## This setup assembles a mdadm array with an encrypted root file system.
## Note: See 'mkinitcpio -H mdadm_udev' for more information on RAID devices.
# HOOKS=(base udev modconf keyboard keymap consolefont block mdadm_udev encrypt filesystems fsck)
#
## This setup loads an lvm2 volume group.
# HOOKS=(base udev modconf block lvm2 filesystems fsck)
#
## NOTE: If you have /usr on a separate partition, you MUST include the
# usr and fsck hooks.
HOOKS=(base udev autodetect kms modconf block keyboard keymap consolefont plymouth filesystems fsck)

# COMPRESSION
# Use this to compress the initramfs image. By default, gzip compression
# is used. Use 'cat' to create an uncompressed image.
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"
#COMPRESSION="zstd"

# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=()

# MODULES_DECOMPRESS
# Decompress kernel modules during initramfs creation.
# Enable to speedup boot process, disable to save RAM
# during early userspace. Switch (yes/no).
#MODULES_DECOMPRESS="yes"

  • Add the location of the config file as in line 19 of the above code.

  • Then, rebuild the initramfs using:

    1
    sudo mkinitcpio -p linux66
  • The above steps should help you in enabling you using your Fn row as usual when in Win mode of the GMK67 keyboard.

  • Thanks

For your Reference