====== Zprovoznění numpadu na Asus Zenbook UX362-FA ======
> **Poznámka:** Tento článek vychází z postupu z 3. 4. 2021. Některé kroky, ovladače nebo chování projektu už nemusí odpovídat aktuálnímu stavu. Ber ho jako dobový zápisek a praktickou zkušenost, ne jako garantovaný aktuální návod.
[[https://github.com/mohamed-badaoui/ux433-touchpad-numpad|ux433-touchpad-numpad]] je komunitní projekt pro zprovoznění numerické klávesnice integrované do touchpadu na některých noteboocích Asus. Na modelu ASUS Zenbook UX362-FA jsem musel udělat drobnější úpravu, ale tehdy byl postup použitelný.
K datu aktualizace 13. 2. 2023 jsem používal ovladače z projektu [[https://github.com/mohamed-badaoui/ux433-touchpad-numpad|ux433-touchpad-numpad]]. Další projekt, který se zabývá ovladači, je [[https://github.com/asus-linux-drivers/asus-touchpad-numpad-driver|asus-touchpad-numpad-driver]], ale pro můj konkrétní numpad jsem v něm tehdy nenašel podporu, takže jsem ho nepoužíval.
===== Instalace potřebných balíčků =====
Prvním krokem je 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
Následně je potřeba zjistit, na kterém čísle sběrnice se nachází numpad:
sudo i2cdetect -l
V mém případě to byla sběrnice číslo 2:
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
Pak už bylo možné otestovat příkazy pro zapnutí a vypnutí LED podsvícení numpadu.
Zapnutí podsvícení:
sudo i2ctransfer -f -y 2 w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x01 0xad
Vypnutí podsvícení:
sudo i2ctransfer -f -y 2 w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x00 0xad
Když to fungovalo, doinstaloval jsem ještě balíček pro Python:
sudo pip3 install libevdev
===== Instalace skriptu =====
Skript původně vznikl pro model ASUS UX433, ale fungoval i pro UX362-FA. Je dostupný na GitHubu: [[https://github.com/mohamed-badaoui/ux433-touchpad-numpad|ux433-touchpad-numpad]]. Pokud by byl touchpad na jiné sběrnici než 2, je potřeba upravit skript tak, aby počítal s jiným číslem sběrnice.
Na jiném počítači běžel touchpad na sběrnici číslo 9, takže bylo potřeba v souboru ''ux433_touchpad_numpad.py'' upravit řá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"
Samotná instalace pak vypadala takto:
chmod +x install.sh
./install.sh
Numpad bylo možné zapnout klávesou **F8** a to byl v tu chvíli doporučený postup.
===== Drobné úpravy pro model UX362-FA =====
Při publikaci původního článku jsem musel udělat drobnou úpravu ve skriptu. Později už byla oprava zahrnuta v repozitáři, ale pro jistotu ji dokumentuji.
Ve skriptu 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 touchpadu. Můj touchpad posílal data do zařízení ''/dev/input/event10''. Ověřit se to dalo takto:
sudo cat /dev/input/event10
Pokud se po dotyku touchpadu začnou zobrazovat data, jde o správné zařízení.
===== Závěr =====
Skript měl v té době ještě drobné chyby. Šlo například zapínat numpad i tlačítkem na touchpadu, ale zlobila klávesa backspace a při přejetí do pravého rohu se mohl numpad omylem zapnout. Přesto už byl workaround použitelný a vývoj projektu tehdy pokračoval poměrně rychle.
===== Zdroje =====
* [[https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1810183|Launchpad – problém s ASUS NumberPad v Linuxu]]
* [[https://github.com/mohamed-badaoui/ux433-touchpad-numpad|GitHub – ux433-touchpad-numpad]]
* [[https://github.com/asus-linux-drivers/asus-touchpad-numpad-driver|GitHub – asus-touchpad-numpad-driver]]