Provavelmente, a resposta correta é escrever um arquivo [hwdb] para substituir a interpretação do código de tecla KEY_CAMERA
em KEY_SPACE
. Este parece ser um exemplo, mas é um pouco carente de detalhes.
O formato do arquivo é principalmente descrito em um comentário na cabeça do arquivo /usr/lib/udev/hwdb.d/60-keyboard.hwdb
(no meu sistema), e você pode ver alguns archlinux discussão disso. Cuidado, este formato depende do lançamento do systemd, então verifique seu próprio arquivo. Você pode combinar seu dispositivo de entrada com um dos três padrões:
Generic input devices match:
evdev:input:bZZZZvYYYYpXXXXeWWWW-VVVV
This matches on the kernel modalias of the input-device, mainly: ZZZZ is the bus-id (see /usr/include/linux/input.h BUS_*), YYYY, XXXX and WWW are the 4-digit hex uppercase vendor, product and version ID and VVVV is an arbitrary length input-modalias describing the device capabilities.AT keyboard DMI data matches:
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnvendor:pnproduct:pvr*
vendor and product are the firmware-provided strings exported by the kernel DMI modalias.Input driver device name and DMI data match:
evdev:name:input device name:dmi:bvn*:bvr*:bd*:svnvendor:pn*
input device name is the name device specified by the driver, vendor is the firmware-provided string exported by the kernel DMI modalias.
Outra possibilidade é escrever um programa pequeno para ler o fluxo de eventos da webcam, como o evtest faz, e quando a chave é vista, injete um KEY_SPACE
no outro fluxo de eventos. Parece haver muito mais documentação sobre isso, e muitos exemplos de Python como este tutorial snippet para injetar um evento.