Cada administrador, tal vez, tuvo un caso cuando algo repentinamente se descompone, y usted está en algún lugar del camino: va en automóvil, toma un tren o, banalmente, se sienta en algún lugar en el banco de un parque y se suelta y sale corriendo a algún lado el deseo no es lo más mínimo. Y necesitas arreglarlo. O, como mínimo, evalúe la escala del animal blanco con pelaje que ha llegado.
Está claro que puede hacerlo con un teléfono inteligente o una tableta, especialmente si solo necesita usar ssh. Pero usar una pantalla táctil en tales casos, como para mí, es dolor y sufrimiento.
Puede comprar un teclado externo, soporte o soporte para la tableta, pero creo que es más fácil llevar una computadora portátil completa con usted. Los lugares tomarán casi lo mismo.
Algunos recuerdos y razonamientos
Demasiado perezoso para leer, puede pasar inmediatamente a la
parte práctica.En un momento, cuando los androides y los iPhones aún no existían, para tales cosas usé la "tableta de Internet" Nokia N810. El teléfono tiene dimensiones con un teléfono inteligente moderno, mientras que tiene un teclado qwerty e incluso con Linux completo a bordo. Ssh, vnc, rdesktop: ¡sí, no hay duda! Además, utilicé activamente CAS Maxima cuando necesitaba calcular algo rápidamente y mostrar el resultado.


Pero pasó el tiempo, comenzaron a aparecer los teléfonos inteligentes Android. Aquí está, pensé: Linux casi completo, al mismo tiempo, no hay necesidad de llevar otro dispositivo con usted para distribuir Internet. Comencé a mirar el dispositivo con qwerty, que me reemplazaría con el viejo y bueno n810, que en ese momento estaba bastante cansado (cable de pantalla, batería reemplazada dos veces, teclado, carcasa rota). La elección recayó en Motorola Milestone.
Aquí está, en parte, junto a mi viejo Palm V y N810:

Debo decir que el producto no justifica la confianza. El teclado fue una completa decepción. Ni siquiera por el diseño, sino por la mano de obra extremadamente pobre: después de seis meses de uso, comenzó a exfoliarse y pasar el rato.
El gestor de arranque cifrado agregó sus uñas al ataúd: la incapacidad de usar el núcleo personalizado con todas las consecuencias, el debian chroot se comió la batería como si en sí mismo, debido a las peculiaridades de la fuente de alimentación, pero de todos modos, el producto de alguna manera resolvió las tareas que se le asignaron.
Por lo menos, continuó usándose después de la expiración del período de obsolescencia planificado determinado por el fabricante, cuando se lanzaron varios modelos más recientes (que difieren, tal vez con un diseño ligeramente cambiado y mucha RAM), y era muy defectuoso y lento.
De acuerdo, ya que la terminal ssh se apagará y el teléfono inteligente (por supuesto, engullirá una cierta cantidad de células nerviosas). Pero hay casos en los que necesita aferrarse a una pieza de hierro con un cable de consola, o eliminar tcpdump con un dispositivo IP que no responde para que pueda hacer algo con él.
Es simplemente encantador cuando, debido a la presencia de un puerto COM en la estación de acoplamiento, una persona arrastra a un pesado tonto HP de 17 "con un muelle y una fuente de alimentación de 1.5 kilogramos, y luego cuelga con todo esto en la escalera de mano frente al mostrador.
Recientemente, utilicé el ThinkPad x220 de 12 "con el adaptador usb2com. Pero cada vez más comencé a dejar el portátil en casa, hasta que un día (una vez más)" $ nombre de usuario, ¡todo se rompió! ", Y solo tenía un teléfono inteligente Android conmigo.
Aquí está, el pez de mis sueños (de hecho, no)
Y una vez me encontré con un producto llamado GPD Pocket. Una computadora portátil completa con el formato de un re-teléfono inteligente o una tableta de menor tamaño. 7 ", qwerty-keyboard, un margen de autonomía decente - eh, necesitas tomarlo. Ordené, recibí, desempaqué.
Para comparar con x220 y n810:

No describiré las características de aquellos que lo necesitan: lo encontrarán en Internet, especialmente desde que recientemente hubo una crítica empalagosa de girbest aquí. Solo da el escape lshw y lspci:
lshw:
Texto oculto: : Default string (Default string) : Default string : Default string №: Default string : 64 bits : smbios-3.0 dmi-3.0 vsyscall32 : boot=normal chassis=desktop family=Default string sku=Default string uuid=00020003-0004-0005-0006-000700080009 *-core : : Default string : AMI Corporation ID: 0 : Default string №: Default string : Default string *-firmware : BIOS : American Megatrends Inc. ID: 0 : 5.11 date: 08/07/2017 : 64KiB capacity: 4032KiB : pci upgrade shadowing cdboot bootselect socketedrom edd int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int14serial int17printer acpi usb biosbootspecification uefi *-memory : ID: 28 : : 8GiB *-bank:0 : DIMM DDR3 1066 MHz (0,9 ns) : 00000000 : Hynix Semiconductor ID: 0 №: 00000000 : A1_DIMM0 : 4GiB : 8 bits : 1066MHz (0.9ns) *-bank:1 : DIMM DDR3 1066 MHz (0,9 ns) : 00000000 : Hynix Semiconductor ID: 1 №: 00000000 : A1_DIMM1 : 4GiB : 8 bits : 1066MHz (0.9ns) *-cache:0 : L1 ID: 32 : CPU Internal L1 : 224KiB capacity: 224KiB : internal write-back : level=1 *-cache:1 : L2 ID: 33 : CPU Internal L2 : 2MiB capacity: 2MiB : internal write-back unified : level=2 *-cpu : : Intel(R) Atom(TM) x7-Z8750 CPU @ 1.60GHz : Intel Corp. ID: 34 : cpu@0 : Intel(R) Atom(TM) x7-Z8750 CPU @ 1.60GHz : SOCKET 0 : 889MHz capacity: 2560MHz : 64 bits : 80MHz : x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp constant_tsc arch_perfmon pebs bts rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch epb pti tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms dtherm ida arat cpufreq : cores=4 enabledcores=4 threads=4 *-pci : Host bridge : Intel Corporation : Intel Corporation ID: 100 : pci@0000:00:00.0 : 34 : 32 bits : 33MHz : driver=iosf_mbi_pci : IRQ:0 *-display : VGA compatible controller : Intel Corporation : Intel Corporation ID: 2 : pci@0000:00:02.0 : 34 : 64 bits : 33MHz : pm msi vga_controller bus_master cap_list rom : driver=i915 latency=0 : IRQ:123 :a0000000-a0ffffff :80000000-9fffffff ioport:f000(=64) :c0000-dffff *-generic:0 : Signal processing controller : Intel Corporation : Intel Corporation ID: b : pci@0000:00:0b.0 : 34 : 64 bits : 33MHz : msi pm cap_list : driver=proc_thermal latency=0 : IRQ:129 :a1a3b000-a1a3bfff *-usb : USB controller : Intel Corporation : Intel Corporation ID: 14 : pci@0000:00:14.0 : 34 : 64 bits : 33MHz : pm msi xhci bus_master cap_list : driver=xhci_hcd latency=0 : IRQ:121 :a1a00000-a1a0ffff *-usbhost:0 : xHCI Host Controller : Linux 4.15.0-rc7-stockmind-gpdpocket xhci-hcd ID: 0 : usb@1 : usb1 : 4.15 : usb-2.00 : driver=hub slots=7 speed=480Mbit/s *-usb:0 : : Gaming Keyboard : SINO WEALTH ID: 2 : usb@1:2 : 1.00 : usb-1.10 : driver=usbhid maxpower=100mA speed=1Mbit/s *-usb:1 : USB- : BCM2045A0 : Broadcom Corp ID: 3 : usb@1:3 : 1.12 №: B0F1ECED56A9 : usb-2.00 : driver=btusb maxpower=100mA speed=12Mbit/s *-usbhost:1 : xHCI Host Controller : Linux 4.15.0-rc7-stockmind-gpdpocket xhci-hcd ID: 1 : usb@2 : usb2 : 4.15 : usb-3.00 : driver=hub slots=6 speed=5000Mbit/s *-generic:1 : Encryption controller : Intel Corporation : Intel Corporation ID: 1a : pci@0000:00:1a.0 : 34 : 32 bits : 33MHz : pm msi bus_master cap_list : driver=mei_txe latency=0 : IRQ:130 :a1900000-a19fffff :a1800000-a18fffff *-pci : PCI bridge : Intel Corporation : Intel Corporation ID: 1c : pci@0000:00:1c.0 : 34 : 32 bits : 33MHz : pci pciexpress msi pm normal_decode bus_master cap_list : driver=pcieport : IRQ:117 :a1000000-a14fffff *-network : : BCM4356 802.11ac Wireless Network Adapter : Broadcom Corporation ID: 0 : pci@0000:01:00.0 : wlp1s0 : 02 №: b0:f1:ec:ed:56:a8 : 64 bits : 33MHz : pm msi pciexpress bus_master cap_list ethernet physical wireless : broadcast=yes driver=brcmfmac driverversion=7.35.180.119 firmware=01-1a5c4016 ip=192.168.1.142 latency=0 multicast=yes wireless=IEEE 802.11 : IRQ:125 :a1400000-a1407fff :a1000000-a13fffff *-isa : ISA bridge : Intel Corporation : Intel Corporation ID: 1f : pci@0000:00:1f.0 : 34 : 32 bits : 33MHz : isa bus_master cap_list : driver=lpc_ich latency=0 : IRQ:0
lspci:
Texto oculto 00:00.0 Host bridge: Intel Corporation Device 2280 (rev 34) 00:02.0 VGA compatible controller: Intel Corporation Device 22b0 (rev 34) 00:0b.0 Signal processing controller: Intel Corporation Device 22dc (rev 34) 00:14.0 USB controller: Intel Corporation Device 22b5 (rev 34) 00:1a.0 Encryption controller: Intel Corporation Device 2298 (rev 34) 00:1c.0 PCI bridge: Intel Corporation Device 22c8 (rev 34) 00:1f.0 ISA bridge: Intel Corporation Device 229c (rev 34) 01:00.0 Network controller: Broadcom Corporation BCM4356 802.11ac Wireless Network Adapter (rev 02)
La calidad de construcción es buena, no reproduce nada, no cruje, no se dobla. La carcasa es de aluminio y, en general, el dispositivo da la impresión de una especie de bloque monolítico. Esta es una ventaja.
Pero también hay suficientes inconvenientes. Pantalla brillante No, no es solo brillante, es literalmente un espejo. Es decir, observará su reflejo en condiciones de iluminación distinta de cero. Había una película protectora en el kit, pero no resolvió el problema.
El segundo es el teclado. El hecho de que ella es maravillosa.

Pero cómo se implementa es vergüenza y horror. Intentando hackear debajo del macbook, con estos espacios vacíos entre los botones, bueno, ¿por qué? Después de todo, el público objetivo, al parecer, no son gatitos glamorosos, solo toman el próximo ipad o macbook. No tenga estos huecos infelices, el tamaño de las teclas podría hacerse más grande.
El botón Fn tiene una capa muy escasa: estos son 2 botones para ajustar el brillo, F1-F12 e Insertar. ¿Por qué necesitamos la fila superior? Podría implementarse como una capa separada.
Los usuarios de Vim son particularmente dolorosos y sufren con un colon colocado en la fila inferior al lado de Ctrl.
Bien, todo está mal, lo trataremos, ya que hay algunas formas (más sobre esto a continuación).
Oh sí, hay un trackpoint aquí. Lo que para mí, como usuario experimentado de ThinkPad, calienta mi alma. Solo una cosa: el trackpoint está ubicado en el lugar equivocado y para usarlo, debes doblar el pulgar. Esto, desafortunadamente, es incurable. Pero por un par de gorras rojas adicionales en el kit, por supuesto, gracias.
Punto de referencia de persona sana:

Punto de seguimiento del fumador:

Instalar y configurar Linux en GPD Pocket
Está claro que las "ventanas", y las "ventanas 10" especialmente, no son lo que necesito en este dispositivo, sino que simplemente están contraindicadas.
Debido a las características del dispositivo, como la orientación de la pantalla (se gira hacia un lado), es imposible simplemente tomar e instalar su Debian favorito sin bailar con una pandereta.

En principio, el sitio web oficial tiene la imagen oficial de Ubuntu LTS 16.04 (que me parece una buena alternativa a Debian estable), pero después de leer las discusiones en Internet, se decidió utilizar el proyecto
GPD Pocket Ubuntu RespinEnfatizo, en general, lo obvio de que solo una imagen construida en Ubuntu es adecuada para usar y alimentar un script, por ejemplo, Debian, no funcionará:
$./build.sh debian-9.3.0-amd64-netinst.iso Display setting: Xorg-Standard Looking for kernel image... Extracting kernel files... Archive: gpdpocket-20180115-kernel-files.zip inflating: linux-headers-4.15.0-rc7-stockmind-gpdpocket_4.15.0-rc7-stockmind-gpdpocket-1_amd64.deb inflating: linux-image-4.15.0-rc7-stockmind-gpdpocket_4.15.0-rc7-stockmind-gpdpocket-1_amd64.deb inflating: linux-libc-dev_4.15.0-rc7-stockmind-gpdpocket-1_amd64.deb ./isorespin.sh: 'debian-9.3.0-amd64-netinst.iso' must be an Ubuntu (or Ubuntu flavour), Linux Mint, neon, elementary, BackBox or Peppermint desktop ISO.
En la salida, obtenemos el archivo linuxium-xubuntu-16.04-desktop-amd64.iso, que escribimos en la unidad flash USB:
#dd if=linuxium-xubuntu-16.04-desktop-amd64.iso of=/dev/sdX
Arrancamos desde él configurando el dispositivo de arranque, yendo a la configuración de UEFI con el botón Eliminar en el arranque.
El procedimiento de instalación es trivial, no veo ningún sentido en la dispersión. Solo noto que es mejor producirlo desde el modo Live, por lo que la pantalla no se girará hacia un lado.
Utilizo cifrado de disco completo, en caso de que el dispositivo se pierda o sea robado de repente. Entonces, al menos, todas sus claves ssh (sí, sé sobre protección con contraseña y ssh-agent) y los inicios de sesión en los recursos de Internet permanecerán intactos. Por lo tanto, puse LVM sobre LUKS, que también te deseo.
Corregir las curvulinas.
Sueño e hibernación
Sería bueno poder tirar una computadora portátil en una bolsa y olvidarse de ella hasta que sea necesaria. Afortunadamente, el tamaño y el peso lo permiten. Sería bueno no iniciar, cada vez, las aplicaciones necesarias manualmente, sino simplemente continuar trabajando desde el lugar donde lo dejó.
El modo de suspensión, al parecer, funciona fuera de la caja. Se implementa por medios regulares, es decir, a través de systemctl suspend. Sin embargo, empíricamente, se encontró que el consumo de energía en este modo no es muy inferior al consumo inactivo. Aparentemente, el dispositivo simplemente apaga la pantalla, las interfaces de red y apaga el refrigerador. Como resultado, la batería aterrizará en cero días durante dos.
Necesita hibernación. El sistema normal hibernate resultó inoperativo: el estado se volcó en un intercambio, pero no se puede recuperar en el arranque.
Recordé que existe un proyecto de este tipo: la
suspensión del software del espacio de usuario y sus paquetes están en el repositorio.
#apt install hibernate
Comprobamos:
#hibernate-disk
¡Voila, funciona! El sistema volcado y apagado. Después de ingresar la contraseña LUKS, recuperada. Pero el sonido y el wifi estaban cubiertos, el brillo de la luz de fondo de la pantalla se restableció al máximo. Lo terminaremos
Instala lo necesario
Antes de continuar con la configuración de ACPI, deberá instalar varias utilidades.
Entonces, para ajustar el brillo de la pantalla es responsable xbacklight.
#apt install xbacklight
La computadora portátil no es un disco duro, sino una unidad flash, por lo que no quiero matarlo con un intercambio. Hay tal cosa
ZRam , aquí la usaremos. Ahora todo es simple con esto, no necesita prescribir hojas en rc.local, y solo necesita hacer lo siguiente:
#apt install zram-config #sudo systemctl enable zram-config.service
El script en sí calculará la cantidad de memoria requerida y creará un swapon.
Como se señaló correctamente en los comentarios, el recurso flash no solo consume el intercambio, sino también el registro. Por lo tanto, / tmp y / var / log se pondrán en ram en tmpfs. Para hacer esto, agregue dos líneas a / etc / fstab:
tmpfs /tmp tmpfs nodev,nosuid,size=256M 0 0 tmpfs /var/log tmpfs nodev,nosuid,size=512M 0 0
Terminamos acpi
En primer lugar, deshabilite los controladores systemg'shnyh. Ya que hace todo por sus propios medios, pero no funcionan. Lema: hacemos todo, pero lo hacemos mal. Por ejemplo, no ha aprendido cómo manejar la conexión de un adaptador de corriente o auriculares, pulsaciones de teclas o similares.
¡Comió ácido y todavía tiene hambre! (4Mb) /etc/systemd/logind.conf
HandlePowerKey=ignore HandleLidSwitch=ignore
#systemctl restart systemd-logind.service
El demonio acpid es responsable de procesar los eventos acpi, cuyos archivos de configuración se almacenan de repente en / etc / acpi.
Enviaremos la computadora portátil a la hibernación presionando el botón de encendido. Para hacer esto, edite los siguientes archivos (si no lo están, debe crear):
/ etc / acpi / events / powerbtn
event=button[ /]power action=/etc/acpi/hibernate.sh
/etc/acpi/hibernate.sh (con comentarios)
Texto oculto #!/bin/bash # , LUKS mv /home/user/bin/lock /home/user/bin/nolock # - killall -9 pulseaudio # zram swap systemctl stop zram-config.service swapon /dev/xubuntu-vg/swap_1 # DISPLAY=:0.0 su user -c "xbacklight >/tmp/xbl" # umount -alt nfs4 umount -alt cifs # wpa_supplicant /sbin/wpa_cli suspend hibernate-disk sleep 2 # DISPLAY=:0.0 su user -c "xbacklight -set `cat /tmp/xbl`" # wpa_supplicant /sbin/wpa_cli resume # alsa, . - /sbin/alsa force-reload # . , DAC1, amixer -c 1 set 'DAC1' 90% # , killall i3lock # mv /home/user/bin/nolock /home/user/bin/lock # zram systemctl start zram-config.service # swapoff /dev/xubuntu-vg/swap_1
La hibernación automática a baja carga no es fácil de implementar, pero es muy simple:
#apt install acpi
/etc/acpi/ifbatlowgotosleep.sh
#!/bin/bash level=`/usr/bin/acpi -b|sed '/unava/d'|awk -F\ '{ print $4 }'|sed -e 's/,//' -e's/%//'` if [ "$level" -lt "10" ] then /etc/acpi/hibernate.sh fi
El script verifica el estado de carga. Si es inferior al 10%, ejecuta el script de hibernación anterior.
La ejecución periódica se establece a través de crontab:
$sudo crontab -e */3 * * * * /etc/acpi/ifbatlowgotosleep.sh 2>/dev/null
En mi caso, la batería se sondea cada 3 minutos.
El modo de suspensión (systemctl suspend), como se mencionó anteriormente, es bastante inútil. Por lo tanto, no veo ninguna razón para activarlo al cerrar la tapa. Además, puede haber un deseo, por ejemplo, de escuchar música de una computadora portátil cerrada en su bolsillo (no es por nada que sea "bolsillo").
Por lo tanto, simplemente apagamos la pantalla al cerrar y la encendemos al abrir.
Eliminar / etc / acpi / lidbtn.
Creamos y editamos:
/ etc / acpi / events / lidclose:
event=button/lid LID close action=/etc/acpi/lidclose.sh
/ etc / acpi / events / lidopen:
event=button/lid LID open action=/etc/acpi/lidopen.sh
/etc/acpi/lidopen.sh
DISPLAY=:0.0 su user -c "xrandr --output DSI1 --off"
/etc/acpi/lidclose.sh
DISPLAY=:0.0 su user -c "xrandr --output DSI1 --auto --rotate right --dpi 200"
Establezca el valor de DPI a su gusto, y el usuario es el nombre sin complicaciones de mi cuenta (cámbielo por el suyo).
Configurar las teclas de control de sonido y brillo
Hacemos esto a través de los mismos eventos acpi.
/ etc / acpi / events / voldown
event=button[ /]volumedown action=/etc/acpi/volume-down.sh
/ etc / acpi / events / volup
event=button[ /]volumeup action=/etc/acpi/volume-up.sh
/ etc / acpi / events / mute
event=button[ /]mute action=/etc/acpi/volume-toggle.sh
Guiones
/etc/acpi/volume-toggle.sh
amixer -c 1 set 'Speaker Channel' toggle amixer -c 1 set 'Headphone Channel' toggle
/etc/acpi/volume-up.sh
amixer -c 1 set 'Headphone' 5%+ amixer -c 1 set 'Speaker' 5%+
/etc/acpi/volume-down.sh
amixer -c 1 set 'Headphone' 5%- amixer -c 1 set 'Speaker' 5%-
Del mismo modo para el brillo:
/ etc / acpi / events / bdown
event=button[ /]brightnessdown action=/etc/acpi/bdown.sh
/ etc / acpi / events / bup
event=button[ /]brightnessup action=/etc/acpi/bup.sh
/etc/acpi/bup.sh
DISPLAY=:0.0 su user -c "xbacklight -inc 5%"
/etc/acpi/bdown.sh
DISPLAY=:0.0 su user -c "xbacklight -dec 5%"
Permítame recordarle, usuario es el nombre de mi cuenta. Entra el tuyo.
Auriculares
Mierda ^ W Un peculiar chip Realtek ALC5645 no puede apagar los altavoces de forma independiente cuando los auriculares están conectados. Tienes que enseñarle al sistema cómo hacerlo tú mismo.
Hay un guión en respin:
Texto oculto #!/bin/bash set -e -u if [ "$1" = "jack/headphone" -a "$2" = "HEADPHONE" ]; then case "$3" in plug) sink="[Out] Headphones" ;; *) sink="[Out] Speaker" ;; esac for userdir in /run/user/*; do uid="$(basename $userdir)" user="$(id -un $uid)" if [ -f "$userdir/pulse/pid" ]; then su "$user" -c "pacmd set-sink-port alsa_output.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645__sink $sink" fi done fi
Pero no funciona. Intenta hacer un cambio a través del control de sincronización del audio, pero falla. Porque:
$sudo su #su user -c "pacmd set-sink-port alsa_output.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645__sink '[Out] Speaker'" PulseAudio, .
La solución es simple: cuando el proceso de audio aún no ha sido llamado por el cliente, no hay nada con lo que contactar a pacmd. Por supuesto, puede agregar la línea de lanzamiento de esta a rc.local, xinitrc o incluso escribir una unidad de sistema separada, pero pensé que era mejor planificar mi propia muleta que reparar otras. Y escribí mi propio guión, creo que mucho menos monstruoso y sofisticado.
/etc/acpi/headphone-jack.sh
#!/bin/bash set -e -u if [ "$3" = "plug" ]; then amixer -c 1 set 'Speaker Channel' mute >/dev/null amixer -c 1 set 'Headphone Channel' unmute >/dev/null else amixer -c 1 set 'Speaker Channel' unmute >/dev/null amixer -c 1 set 'Headphone Channel' mute >/dev/null fi
Tratamos el diseño y otras pequeñas cosas.
Como ya se mencionó, el diseño me enfurece. El botón Eliminar es donde deberían estar la barra invertida y la barra, los dos puntos en la fila inferior, no está claro por qué el menú de teclas, la pestaña es donde está el escape en los teclados normales ...
No pintaré en detalle, con análisis, solo traeré mi ~ / .xmodmaprc y describiré cómo se hace.
Para comenzar, necesitamos atrapar el código clave. Esto se hace usando el programa xev (#apt install xev, yes). Ejecute, presione la tecla deseada y obtenga una salida como:
KeyPress event, serial 33, synthetic NO, window 0x3200001, root 0x2c0, subw 0x0, time 187713326, (979,493), root:(982,1078), state 0x0, keycode 119 (keysym 0xffff, Delete), same_screen YES, XLookupString gives 1 bytes: (7f) "" XmbLookupString gives 1 bytes: (7f) "" XFilterEvent returns: False
Necesitamos el valor "keycode 119".
A continuación, abra ~ / .xmodmaprc y escriba allí
keycode 119 = backslash bar backslash bar
Y presentamos la ejecución de "xmodmap ~ / .xmodmaprc" en su xinitrc o como se llame cuando inicia su DE o WM favorito.
Mi ~ / .xmodmaprc:
Texto oculto pointer = 1 2 3 4 5 remove Lock = Caps_Lock remove Control = Control_L keycode 0x42 = Control_L keycode 135 = Alt_R keycode 0x25 = Super_R keycode 133 = Super_R add Control = Control_L keycode 113 = Left keycode 111 = Up keycode 114 = Right keycode 116 = Down keycode 110 = Home keycode 115 = End keycode 108 = ISO_Next_Group keycode 136 = ISO_First_Group keycode 49 = asciitilde grave asciitilde grave keycode 119 = backslash bar backslash bar keycode 51 = Delete keycode 48 = colon semicolon Cyrillic_zhe Cyrillic_ZHE keycode 47 = apostrophe quotedbl Cyrillic_e Cyrillic_E keycode 130 = XF86Explorer keycode 121 = XF86AudioMute keycode 198 = XF86AudioMicMute keycode 122 = XF86AudioLowerVolume keycode 123 = XF86AudioRaiseVolume keycode 37 = Tab clear mod5 add mod5 = XF86Explorer keycode 166 = Prior keycode 167 = Next
Utiliza cosas tan dudosas para la mayoría de los usuarios como transferir ctrl a mayúsculas, tabular a ctrl_l, alt_gr al menú y cambiar el diseño a la antigua posición altgr.
También uso xcape para emular presionar escape con un solo clic en ctrl_l. Llamado así:
xcape -t 1000 -e "Control_L=Escape"
Como prefiero los temas oscuros que son más cómodos (tengo una opinión, argumentaría el rábano picante) en condiciones de poca luz, pero a menudo tienen que trabajar a plena luz del día, hay un pequeño truco: los colores de la imagen pueden invertirse. Para hacer esto, necesita el programa xcalib:
#apt install xcalib
Invertir:
$xcalib -i -a
Puede vincularse a cualquier tecla de acceso rápido conveniente utilizando el administrador de ventanas. Estoy colgando en Super_L + Retroceso.
Resumen
Las impresiones del dispositivo son más positivas que negativas. No me arrepiento del dinero gastado. El dispositivo no ocupa mucho espacio en la bolsa, cabe en el bolsillo de los pantalones cargo y una chaqueta de humo.

Funciona durante mucho tiempo con la batería, para la prueba me desplacé películas de tres horas y media con wifi encendido, descargado en algún lugar a la mitad. Se carga desde una pavimentadora con usb-a a través de un adaptador de CA.
Todos los curvulins suaves encontrados fueron tratados con éxito.
Es desafortunado que no haya un puerto rj45, pero espero que sea resuelto por el adaptador ordenado con usb. La falta de comunicaciones móviles y cámaras, ahora, en condiciones de vigilancia total, creo que es una ventaja.