FN Key Handling Issue in Garuda Linux with Sway

Hello Garuda Linux Team,

I am experiencing an issue with the FN key handling in Garuda Linux while using the Sway window manager. The problem persists both in the live ISO environment and after installation. Here are the details:

Issue Description:

  • The keyboard layout is set to “Hungarian/Hungarian standard,” but the FN key is not functioning as expected.
  • The system behaves as if the FN key is constantly pressed, altering the expected character outputs.
  • When I physically press and hold the FN key, the keyboard produces the correct standard characters.
  • This issue is present from the moment the live ISO is booted and continues after the system is installed.

Troubleshooting Steps:

  1. Keyboard Settings:
  • I have verified that the keyboard layout is set to “Hungarian/Hungarian standard” in Garuda Settings.
  • The settings do not persist, and the layout reverts to “English US” after closing the settings window.
  1. Command-Line Attempts:
  • I tried using setxkbmap hu both as a regular user and with sudo, but received the error: “Authorization required, but no authorization protocol specified. Cannot open Display “:0”.”
  • I confirmed that the /etc/default/keyboard file has the correct settings:

Copy

XKBMODEL="pc105"
XKBLAYOUT="hu"
XKBVARIANT="standard"
BACKSPACE="guess"
  1. Sway Configuration:
  • I added the following line to my Sway config file (~/.config/sway/config):

Copy

input * xkb_layout hu
  • I reloaded the Sway configuration using swaymsg reload, but encountered the error: “Unable to retrieve socket path.”
  1. Environment Variables:
  • I checked the WAYLAND_DISPLAY environment variable, which seems to be set correctly.
  • I also checked the DISPLAY variable, but it is not set, which might be expected since I am using Wayland.
  1. System Updates:
  • The system is fully updated, and there are no pending updates.

Additional Information:

  • I am using the latest version of Garuda Linux with Sway.
  • The issue occurs both in the live environment and after installation

System Information (garuda-inxi Output):

System:
  Kernel: 6.13.5-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 14.2.1 clocksource: hpet
    avail: acpi_pm parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=638838c4-14c6-4125-8724-c52a35ce4d62 rw rootflags=subvol=@ quiet
    resume=UUID=a4df42f6-add7-4ba5-97e9-07b4a298a42e loglevel=3 ibt=off
  Console: pty pts/1 LM: greetd Distro: Garuda base: Arch Linux
Machine:
  Type: Laptop System: ASUSTeK product: F80Q v: 1.0 serial: <filter>
  Mobo: ASUSTeK model: F80Q v: 1.0 serial: <filter> uuid: 803788f8-0c08-de81-3373-00248c5567d7
    BIOS: American Megatrends v: 219 date: 04/10/2009
Battery:
  ID-1: BAT0 charge: 45.9 Wh (99.6%) condition: 46.1/48.4 Wh (95.3%) power: 2.3 W volts: 12.6
    min: 10.8 model: ASUSTEK F80--22 type: Li-ion serial: N/A status: charging
CPU:
  Info: model: Intel Core2 Duo T8100 socket: 478 bits: 64 type: MCP arch: Penryn level: v1
    built: 2008 process: Intel 45nm family: 6 model-id: 0x17 (23) stepping: 6 microcode: 0x60F
  Topology: cpus: 1x dies: 1 clusters: 1 cores: 2 smt: <unsupported> cache: L1: 128 KiB
    desc: d-2x32 KiB; i-2x32 KiB L2: 3 MiB desc: 1x3 MiB
  Speed (MHz): avg: 800 min/max: 800/2101 boost: enabled base/boost: 2100/2100 scaling:
    driver: acpi-cpufreq governor: schedutil volts: 1.1 V ext-clock: 200 MHz cores: 1: 800 2: 800
    bogomips: 8379
  Flags: ht lm nx pae sse sse2 sse3 sse4_1 ssse3 vmx
  Vulnerabilities: <filter>
Graphics:
  Device-1: Intel Mobile 4 Series Integrated Graphics vendor: ASUSTeK driver: i915 v: kernel
    arch: Gen-5 process: Intel 45nm built: 2008 ports: active: LVDS-1 empty: DP-1,VGA-1
    bus-ID: 00:02.0 chip-ID: 8086:2a42 class-ID: 0300
  Device-2: Chicony 2.0M UVC Webcam / CNF7129 driver: uvcvideo type: USB rev: 2.0
    speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 8-3:2 chip-ID: 04f2:b071 class-ID: 0e02
    serial: <filter>
  Display: unspecified server: Xwayland v: 24.1.6 compositor: Sway v: 0.5 driver: gpu: i915
    tty: 103x31
  Monitor-1: LVDS-1 model: AU Optronics 0x4444 built: 2006 res: 1280x800 dpi: 107 gamma: 1.2
    size: 304x190mm (11.97x7.48") diag: 358mm (14.1") ratio: 16:10 modes: 1280x800
  API: Vulkan v: 1.4.304 layers: 4 device: 0 type: cpu name: llvmpipe (LLVM 19.1.7 128 bits)
    driver: N/A device-ID: 10005:0000 surfaces: N/A
  API: EGL Message: EGL data unavailable in console, eglinfo missing.
  Info: Tools: api: vulkaninfo wl: kanshi, swaymsg, wdisplays x11: xprop
Audio:
  Device-1: Intel 82801I HD Audio vendor: ASUSTeK driver: snd_hda_intel v: kernel bus-ID: 00:1b.0
    chip-ID: 8086:293e class-ID: 0403
  API: ALSA v: k6.13.5-zen1-1-zen status: kernel-api tools: alsactl,alsamixer,amixer
  Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
  Server-2: PipeWire v: 1.2.7 status: active with: 1: pipewire-pulse status: active
    2: wireplumber status: active 3: pipewire-alsa type: plugin 4: pw-jack type: plugin
    tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Realtek RTL810xE PCI Express Fast Ethernet vendor: ASUSTeK driver: r8169 v: kernel
    pcie: gen: 1 speed: 2.5 GT/s lanes: 1 port: d800 bus-ID: 01:00.0 chip-ID: 10ec:8136
    class-ID: 0200
  IF: enp1s0 state: up speed: 100 Mbps duplex: full mac: <filter>
  Device-2: Qualcomm Atheros AR928X Wireless Network Adapter vendor: AzureWave AW-NE771
    802.11bgn driver: ath9k v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1 bus-ID: 02:00.0
    chip-ID: 168c:002a class-ID: 0280
  IF: wlp2s0 state: down mac: <filter>
  Info: services: NetworkManager, sshd, systemd-timesyncd
Drives:
  Local Storage: total: 119.24 GiB used: 10.64 GiB (8.9%)
  SMART Message: Required tool smartctl not installed. Check --recommends
  ID-1: /dev/sda maj-min: 8:0 vendor: Apacer model: AS350 128GB size: 119.24 GiB block-size:
    physical: 512 B logical: 512 B speed: 3.0 Gb/s tech: SSD serial: <filter> fw-rev: 117D
    scheme: MBR
Partition:
  ID-1: / raw-size: 110.91 GiB size: 110.91 GiB (100.00%) used: 10.64 GiB (9.6%) fs: btrfs
    block-size: 4096 B dev: /dev/sda1 maj-min: 8:1
  ID-2: /home raw-size: 110.91 GiB size: 110.91 GiB (100.00%) used: 10.64 GiB (9.6%) fs: btrfs
    block-size: 4096 B dev: /dev/sda1 maj-min: 8:1
  ID-3: /var/log raw-size: 110.91 GiB size: 110.91 GiB (100.00%) used: 10.64 GiB (9.6%)
    fs: btrfs block-size: 4096 B dev: /dev/sda1 maj-min: 8:1
  ID-4: /var/tmp raw-size: 110.91 GiB size: 110.91 GiB (100.00%) used: 10.64 GiB (9.6%)
    fs: btrfs block-size: 4096 B dev: /dev/sda1 maj-min: 8:1
Swap:
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
  ID-1: swap-1 type: partition size: 8.33 GiB used: 0 KiB (0.0%) priority: -2 dev: /dev/sda2
    maj-min: 8:2
  ID-2: swap-2 type: zram size: 3.79 GiB used: 0 KiB (0.0%) priority: 100 comp: zstd
    avail: lzo-rle,lzo,lz4,lz4hc,deflate,842 max-streams: 2 dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 36.0 C mobo: N/A
  Fan Speeds (rpm): N/A
Info:
  Memory: total: 4 GiB available: 3.79 GiB used: 785.6 MiB (20.3%) igpu: 32 MiB
  Processes: 182 Power: uptime: 37m states: freeze,mem,disk suspend: deep avail: s2idle
    wakeups: 0 hibernate: platform avail: shutdown, reboot, suspend, test_resume image: 1.5 GiB
    services: upowerd Init: systemd v: 257 default: graphical tool: systemctl
  Packages: pm: pacman pkgs: 1157 libs: 370 tools: pacseek,paru Compilers: gcc: 14.2.1
    Shell: garuda-inxi (sudo) default: Bash v: 5.2.37 running-in: pty pts/1 (SSH) inxi: 3.3.37
Garuda (2.7.2-1):
  System install date:     2025-03-07
  Last full system update: 2025-03-07 ↻
  Is partially upgraded:   No
  Relevant software:       snapper NetworkManager dracut
  Windows dual boot:       No/Undetected
  Failed units:

I would appreciate any guidance or suggestions on how to resolve this issue. Thank you for your help!

Best regards,
Gàbor

What is the output of localectl status? The default config has a couple lines that set the default keyboard layout based on this output.

~/.config/sway/config.d/input
[...]

# Set keyboard layout and variant based on current system settings
exec_always {
   'swaymsg input type:keyboard xkb_layout "$(localectl status | grep "X11 Layout" | sed -e "s/^.*X11 Layout://")"'
   'swaymsg input type:keyboard xkb_variant "$(localectl status | grep "X11 Variant" | sed -e "s/^.*X11 Variant://")"'
}

[...]

Try commenting out or deleting those lines from the config, and replace with something like this:

input "type:keyboard" {
    xkb_layout "hu"
    xkb_variant "standard"
}

That is very odd. Is Sway actually running (i.e. you are not running this command from a TTY)? If it is running, what was your method for starting the session? Try logging out and back in if reloading the session doesn’t work.

1 Like

Hello @BluishHumility I sleeped for the problem and i was totally wrong(couse tired), the problem is not the language… I adjusted my whole post… The problem is with FN function.

That part is totally ok:

System Locale: LANG=en_US.UTF-8 LC_NUMERIC=hu_HU.UTF-8 LC_TIME=hu_HU.UTF-8 LC_MONETARY=hu_HU.UTF-8 LC_PAPER=hu_HU.UTF-8 LC_NAME=hu_HU.UTF-8 LC_ADDRESS=hu_HU.UTF-8 LC_TELEPHONE=hu_HU.UTF-8 LC_MEASUREMENT=hu_HU.UTF-8 LC_IDENTIFICATION=hu_HU.UTF-8 VC Keymap: hu X11 Layout: hu X11 Model: pc105 X11 Variant: standard

Yup i belive that was tty, but after i go to the laptop and reloaded sway, with the same command…

A lot of laptops have a “Fn lock” feature, to behave as if the Fn key is constantly held down. See if you can toggle Fn lock off with Fn+Esc or Fn+Ins. How to Deactivate FN Lock On - r/ASUS

Check in your BIOS settings for an option to permanently default to Fn lock off.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.