Asus u svých notebooků přišel ze zajímavou novinkou. To touchpadu integroval numerickou klávesnici. Pokud člověk pracuje často s čísly nebo v Blenderu, tak se tato vychytávka může hodit. Bohužel Asus odmítá poskytnout ovladače či zdrojový kód pro Linux. Takže komunita musela postupně přijít s vlastním řešením. Je to v tuto chvíli spíše workaroud než ovladače, ale je to je to už dobře použitelné.
Workaround spočívá v tom, že někdo šikovný odposlechnul komunikaci a pomocí příkazu dokáže zapnout a vypnout LED podsvícení numpadu na touchpadu. A někdo další napsal skript v Pythonu, který odposlechne na jaké pozici má člověk prst a podle toho detekuje číslo na numerické klávesnici. Na mém modelu ASUS UX362-FA jsem musel udělat drobnější úpravu ve zdrojovém kódu, ale mohu potvrdit, že je skript k dnešnímu dni funkční.
Edit 13.2.2023: Aktuálně využívám ovladače: https://github.com/mohamed-badaoui/ux433-touchpad-numpad . Další projekt, který se zabývá ovladači je https://github.com/asus-linux-drivers/asus-touchpad-numpad-driver. Tam jsem ovšem zatím nenašel verzi svého Numpadu, takže zatím nepoužívám.
Instalace potřebných balíčků
Prvním krokem instalace nástrojů pro posílání zpráv přes i2c sběrnici. Je dobré počítat s tím, že většina příkazů musí běžet s právy roota.
sudo aptitude install i2c-tools sudo modprobe i2c-dev sudo i2cdetect -l
Zkontroloval jsem, na kterém čísle sběrnice se nachází můj numpad.
sudo i2cdetect -l i2c-3 i2c Synopsys DesignWare I2C adapter I2C adapter i2c-10 i2c AUX C/port C I2C adapter i2c-1 i2c Synopsys DesignWare I2C adapter I2C adapter i2c-8 i2c AUX A/port A I2C adapter i2c-6 i2c i915 gmbus misc I2C adapter i2c-4 i2c i915 gmbus dpb I2C adapter i2c-2 i2c Synopsys DesignWare I2C adapter I2C adapter i2c-0 smbus SMBus I801 adapter at efa0 SMBus adapter i2c-9 i2c AUX B/port B I2C adapter i2c-7 i2c i915 gmbus dpd I2C adapter i2c-5 i2c i915 gmbus dpc I2C adapter
U mého modelu to je sběrnice číslo 2. Nyní je možné otestovat, zda funguje příkaz pro zapínání a vypínání LED podsvícení. Za parametrem -y uvádím číslo mojí sběrnice. Touchpad jsem měl vypnutý, nicméně zpozoroval jsem, že jsem se musel v některých případech inicializace touchpadu dotknout a pak příkaz spustit. Nevím jestli to bylo náhoda nebo pravidlo.
Zapnutí podsvícení:
sudo i2ctransfer -f -y 2 w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x01 0xad
Vypnutí podscívcení:
sudo i2ctransfer -f -y 2 w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x01 0xad
Když všechno fungoval, tak jsem nainstaloval poslední balíček pro python:
sudo pip3 install libevdev
Instalace skriptu
Skript vzniknul pro model ASUS UX433, nicméně funguje i pro model UX362-FA. Je umístěn na githubu: https://github.com/mohamed-badaoui/ux433-touchpad-numpad. Pokud bych měl touchpad na jiné sběrnici než 2, musel bych skript editovat, aby počítal s jiným číslem sběrnice. Na jiném počítači běžel touchpad na sběrnici číslo 9 (hledejte zařízení DesignWare a číslo za řetězcem i2c-), musel jsem skript ux433_touchpad_numpad.py editovat a nastavit řádky 8 a 9:
onCmd = "i2ctransfer -f -y 9 w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x01 0xad" offCmd = "i2ctransfer -f -y 9 w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x00 0xad"
Následně pak spustit instalaci:
chmod +x install.sh ./install.sh
Numpad je možné zapnout klávesou F8 a je to v tuto chvíli doporučený postup.
Dokumentace drobné úpravy pro model UX362FA
Pár hodin před psaním příspěvku jsem musel udělat drobnou úpravu ve skriptu. Před publikací už byla oprava zahrnuta v repozitáři. Nyní tedy jenom dokumentuji, pokud by se někdo setkal s podobným problémem.
Ve skritpu jsem musel změnit řádek 24 na:
if touchpad_detected == 0 and "Name=\"ELAN" in line and "Touchpad" in line:
Docházelo totiž ke špatné identifikaci mého touchpadu. Můj touchpad posílá data do zařízení /dev/input/event10. Lze to ověřit tak, že vypíšu obsah souboru a začnu se dotýkat touchpadu. Pokud se začnou zobrazovat nějaké znaky, tak jsem identifikoval správné zařízení:
sudo cat /dev/input/event10
Závěr
Skript má v tuto chvíli drobné chyby. Lze zapínat i tlačítkem na touchpadu/numpadu. Ale zlobí klávesa backspace – při stisku klávesy zůstane backspace přidržen a maže a maže.. Zároveň při přejetí do pravého rohu si můžete numpad omylem zapnout. Editací skriptu bude určitě možné tlačítko na touchpadu odpojit. Každopádně skript je čerstvý a jenom dnes jsem zaevidoval 2 nové verze. Takže je možné, že některé chyby budou ještě odstraněny.