Keyboard issues

I’d like to use opensuse as my daily driver but there are a few issues that prevent me from doing so, and I need your help if you please:

  • my keyboard’s backlight and Fn bindings are not supported. I found a workaroud that works in other distros but is says unsupported linux distribution in openSUSE. A very helpful man tried to make it work, but the output was swering about the 6.13 kernel being incompatible.

  • I have a few dead keys including left Ctrl. I usually use this remapper to make \ work as left CTRL. This is the only solution that was working on any distros I tried so far, except opensuse, where it doesn’t autoload after reboot.
    Thanks in advance for your help!

Where is it?

Here it is patched for openSUSE:

Also a Pull Req. for kernel 6.13 is there.

I know it’s there, because Michal Szczepaniak - the Legend made the change after I asked him to do so. That’s how we went from unsupported distribution to swearing about kernel version. Would it work in openSUSE now? I’m asking because I’m can’t access the said laptop to try it out. Will do it asap anyway :slight_smile:

I do not know if it is working, I do not use Tumbleweed or kernel 6.13.

There was a pull request about kernel 6.13, read there.

Or maybe use Leap 15.6 with kernel 6.4.

Is there a fix for input-mapper or a good alternative I don’t know of? Thanks!

Here’s what you want ( I think ): Remap custom keyboard keys in Linux - Tutorial

Thanks for your suggestion but I’ve seen the guide a few months ago. It only works on X11. My system runs on Wayland.

This GitHub - sezanzeb/input-remapper: 🎮 ⌨ An easy to use tool to change the behaviour of your input devices. promises to work on Wayland. There are some packagers building it in their home: repos.

But I mentioned in my post that is works in Wayland. This is the app I was using in other distros like fedora. The issue I mentioned is that it doesn’t autostart in opensuse. If this issue can be solved, there’s only the Clevo keyboard kernel patch that’s keeping me from installing openSUSE as my main OS. So the hope is alive :slight_smile:

OK focussing on the autostart thing:
It looks like a systemd service is involved, is that enabled and set to start at boot?

1 Like

Thank you for reminding me about it :slight_smile: I completely forgot to enable it myself before rebooting. User issue solved!
sudo systemctl enable --now input-remapper did wonders :slight_smile:
Now I only have to wait until the guys will fix the keyboard patch (unless someone forces them to add 6.13 kernel fix today :slight_smile: )

The kb.sh in the github project seems to take care of it all, you could follow the instructions and try.

I tried it multiple times already. It’s not ready yet.

This is working in Leap:

stephan@linux64:~/git/git/tuxedo-keyboard> ls -al /lib/modules/6.4.0-150600.23.38-default/updates/
insgesamt 68
drwxr-xr-x 2 root root  4096 20. Feb 21:06 .
drwxr-xr-x 5 root root  4096 20. Feb 21:07 ..
-rw-r--r-- 1 root root  4444 20. Feb 21:06 clevo_acpi.ko.zst
-rw-r--r-- 1 root root  4112 20. Feb 21:06 clevo_wmi.ko.zst
-rw-r--r-- 1 root root  7616 20. Feb 21:06 tuxedo_io.ko.zst
-rw-r--r-- 1 root root 26163 20. Feb 21:06 tuxedo_keyboard.ko.zst
-rw-r--r-- 1 root root  5697 20. Feb 21:06 uniwill_wmi.ko.zst
lsmod | grep -Ei 'tux|clev'
clevo_wmi              16384  0
tuxedo_keyboard        86016  1 clevo_wmi
sparse_keymap          12288  1 tuxedo_keyboard
led_class_multicolor    16384  1 tuxedo_keyboard
wmi                    45056  3 video,clevo_wmi,wmi_bmof

Does Leap have the latest 6.13 kernel?

No. But I don’t get why that kernel is needed, the project provides a patched kernel module for the tuxedo keyboard, and AFAIU that is what you need.

It’s not that a specific kernel is needed, but the patch doesn’t work on anything above 6.12 kernel. A pull request has been opened and I’m waiting for 6.13 to be supported by this patch, because tumbleweed runs on the latest 6.13 which gives me a fatal error when trying to apply the patch.

1 Like

Do not use the kb.sh!
Install as described here, but patch the two files by inserting the patch:

Clone the directory and before using make, download the patch here:
https://www.krauttranslate.de/~sauerland/613.patch

copy the patch to the directory where the Makefile is stored, go to that directory and use:
patch -p1 -i 613.patch

After that, you can use the above guide with make clean && make etc.

If you use secure boot, you have to add the mok key as root:

mokutil --import /var/lib/dkms/mok.pub
Enter the Password twice and on restart you should see the blue mok-screen and add the key as described here:
Mok Example

Also you have to copy the tuxedo_keyboard.conf to /etc/modprobe.d and use it for configuration.

The last part of the make output:

  CC [M]  src/tuxedo_keyboard.o
In file included from src/tuxedo_keyboard.c:21:
src/tuxedo_keyboard_common.h:64:6: warning: no previous prototype for ‘sparse_keymap_report_known_event’ [-Wmissing-prototypes]
   64 | bool sparse_keymap_report_known_event(struct input_dev *dev, unsigned int code,
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from src/tuxedo_keyboard.c:22:
src/clevo_keyboard.h:394:19: error: initialization of ‘void (*)(struct platform_device *)’ from incompatible pointer type ‘int (*)(struct platform_device *)’ [-Wincompatible-pointer-types]
  394 |         .remove = clevo_keyboard_remove,
      |                   ^~~~~~~~~~~~~~~~~~~~~
src/clevo_keyboard.h:394:19: note: (near initialization for ‘platform_driver_clevo.remove’)
In file included from src/tuxedo_keyboard.c:23:
src/uniwill_keyboard.h:1259:19: error: initialization of ‘void (*)(struct platform_device *)’ from incompatible pointer type ‘int (*)(struct platform_device *)’ [-Wincompatible-pointer-types]
 1259 |         .remove = uniwill_keyboard_remove,
      |                   ^~~~~~~~~~~~~~~~~~~~~~~
src/uniwill_keyboard.h:1259:19: note: (near initialization for ‘platform_driver_uniwill.remove’)
make[4]: *** [/usr/src/linux-6.13.2-1/scripts/Makefile.build:197: src/tuxedo_keyboard.o] Error 1
make[3]: *** [/usr/src/linux-6.13.2-1/Makefile:2012: .] Error 2
make[2]: *** [/usr/src/linux-6.13.2-1/Makefile:251: __sub-make] Error 2
make[2]: Leaving directory '/home/petrujenac/tuxedo-keyboard'
make[1]: *** [../../../linux-6.13.2-1/Makefile:251: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-6.13.2-1-obj/x86_64/default'
make: *** [Makefile:29: all] Error 2

My fault, the clevo-keyboard uses an older tuxedo sources.
Updated a new patch.

First please update your system and reboot.
Delete the tuxedo or clevo directory.

So here is what I have done in my qemu Tumbleweed machine (output in German but that should not matter, commands are the same):
Using now the clevo-keyboard.git.

stephan@qemu-tumbleweed:~> git clone https://github.com/wessel-novacustom/clevo-keyboard.git
Klone nach 'clevo-keyboard'...
remote: Enumerating objects: 2684, done.
remote: Counting objects: 100% (875/875), done.
remote: Compressing objects: 100% (216/216), done.
remote: Total 2684 (delta 719), reused 763 (delta 635), pack-reused 1809 (from 1)
Empfange Objekte: 100% (2684/2684), 749.02 KiB | 8.51 MiB/s, fertig.
Löse Unterschiede auf: 100% (1589/1589), fertig.

stephan@qemu-tumbleweed:~> cd clevo-keyboard/

stephan@qemu-tumbleweed:~/clevo-keyboard> wget https://www.krauttranslate.de/~sauerland/613.patch
--2025-02-21 10:45:45--  https://www.krauttranslate.de/~sauerland/613.patch
Auflösen des Hostnamens www.krauttranslate.de (www.krauttranslate.de)… 95.216.7.106, 2a01:4f9:2a:795::2
Verbindungsaufbau zu www.krauttranslate.de (www.krauttranslate.de)|95.216.7.106|:443 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 5638 (5,5K) [text/x-diff]
Wird in »613.patch« gespeichert.

613.patch                                               100%[===============================================================================================================================>]   5,51K  --.-KB/s    in 0s      

2025-02-21 10:45:45 (2,62 GB/s) - »613.patch« gespeichert [5638/5638]

stephan@qemu-tumbleweed:~/clevo-keyboard> patch -p1 -i 613.patch 
patching file Makefile
patching file src/tuxedo_keyboard.c

stephan@qemu-tumbleweed:~/clevo-keyboard> make clean && make
make -C /lib/modules/6.13.3-1-default/build M=/home/stephan/clevo-keyboard clean
make[1]: Verzeichnis „/usr/src/linux-6.13.3-1-obj/x86_64/default“ wird betreten
make[2]: Verzeichnis „/home/stephan/clevo-keyboard“ wird betreten
make[2]: Verzeichnis „/home/stephan/clevo-keyboard“ wird verlassen
make[1]: Verzeichnis „/usr/src/linux-6.13.3-1-obj/x86_64/default“ wird verlassen
make -C /lib/modules/6.13.3-1-default/build M=/home/stephan/clevo-keyboard modules
make[1]: Verzeichnis „/usr/src/linux-6.13.3-1-obj/x86_64/default“ wird betreten
make[2]: Verzeichnis „/home/stephan/clevo-keyboard“ wird betreten
  CC [M]  src/tuxedo_keyboard.o
  CC [M]  src/clevo_wmi.o
  CC [M]  src/clevo_acpi.o
  CC [M]  src/tuxedo_io/tuxedo_io.o
  CC [M]  src/uniwill_wmi.o
  MODPOST Module.symvers
  CC [M]  src/tuxedo_keyboard.mod.o
  CC [M]  .module-common.o
  LD [M]  src/tuxedo_keyboard.ko
  BTF [M] src/tuxedo_keyboard.ko
Skipping BTF generation for src/tuxedo_keyboard.ko due to unavailability of vmlinux
  CC [M]  src/clevo_wmi.mod.o
  LD [M]  src/clevo_wmi.ko
  BTF [M] src/clevo_wmi.ko
Skipping BTF generation for src/clevo_wmi.ko due to unavailability of vmlinux
  CC [M]  src/clevo_acpi.mod.o
  LD [M]  src/clevo_acpi.ko
  BTF [M] src/clevo_acpi.ko
Skipping BTF generation for src/clevo_acpi.ko due to unavailability of vmlinux
  CC [M]  src/tuxedo_io/tuxedo_io.mod.o
  LD [M]  src/tuxedo_io/tuxedo_io.ko
  BTF [M] src/tuxedo_io/tuxedo_io.ko
Skipping BTF generation for src/tuxedo_io/tuxedo_io.ko due to unavailability of vmlinux
  CC [M]  src/uniwill_wmi.mod.o
  LD [M]  src/uniwill_wmi.ko
  BTF [M] src/uniwill_wmi.ko
Skipping BTF generation for src/uniwill_wmi.ko due to unavailability of vmlinux
make[2]: Verzeichnis „/home/stephan/clevo-keyboard“ wird verlassen
make[1]: Verzeichnis „/usr/src/linux-6.13.3-1-obj/x86_64/default“ wird verlassen

stephan@qemu-tumbleweed:~/clevo-keyboard> make clean
make -C /lib/modules/6.13.3-1-default/build M=/home/stephan/clevo-keyboard clean
make[1]: Verzeichnis „/usr/src/linux-6.13.3-1-obj/x86_64/default“ wird betreten
make[2]: Verzeichnis „/home/stephan/clevo-keyboard“ wird betreten
  CLEAN   Module.symvers
make[2]: Verzeichnis „/home/stephan/clevo-keyboard“ wird verlassen
make[1]: Verzeichnis „/usr/src/linux-6.13.3-1-obj/x86_64/default“ wird verlassen

stephan@qemu-tumbleweed:~/clevo-keyboard> sudo make dkmsinstall

Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die
Regeln erklärt hat.  Normalerweise läuft es auf drei Regeln hinaus:

    #1) Respektieren Sie die Privatsphäre anderer.
    #2) Denken Sie nach, bevor Sie tippen.
    #3) Mit großer Macht kommt große Verantwortung.

Das eingegebene Passwort ist aus Sicherheitsgründen nicht sichtbar.

[sudo] Passwort für root: 
cp -R . /usr/src/tuxedo-keyboard-3.2.10
dkms install -m tuxedo-keyboard -v 3.2.10

Sign command: /lib/modules/6.13.3-1-default/build/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub
Certificate or key are missing, generating self signed certificate for MOK...
Creating symlink /var/lib/dkms/tuxedo-keyboard/3.2.10/source -> /usr/src/tuxedo-keyboard-3.2.10

Cleaning build area... done.
Building module(s)... done.
Signing module /var/lib/dkms/tuxedo-keyboard/3.2.10/build/src/tuxedo_keyboard.ko
Signing module /var/lib/dkms/tuxedo-keyboard/3.2.10/build/src/clevo_wmi.ko
Signing module /var/lib/dkms/tuxedo-keyboard/3.2.10/build/src/clevo_acpi.ko
Signing module /var/lib/dkms/tuxedo-keyboard/3.2.10/build/src/tuxedo_io/tuxedo_io.ko
Signing module /var/lib/dkms/tuxedo-keyboard/3.2.10/build/src/uniwill_wmi.ko
Cleaning build area... done.

Installing /lib/modules/6.13.3-1-default/updates/tuxedo_keyboard.ko.zst
Installing /lib/modules/6.13.3-1-default/updates/clevo_wmi.ko.zst
Installing /lib/modules/6.13.3-1-default/updates/clevo_acpi.ko.zst
Installing /lib/modules/6.13.3-1-default/updates/tuxedo_io.ko.zst
Installing /lib/modules/6.13.3-1-default/updates/uniwill_wmi.ko.zst
Running depmod... done.

stephan@qemu-tumbleweed:~/clevo-keyboard>

If secure boot, see my last post.

1 Like