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.
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 ux433-touchpad-numpad. Další projekt, který se zabývá ovladači, je 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.
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
Skript původně vznikl pro model ASUS UX433, ale fungoval i pro UX362-FA. Je dostupný na GitHubu: 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.
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í.
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.