В bash:
Это работает с любым текстом и только с внутренними компонентами bash (внешняя утилита не вызывается), поэтому должна быть быстрой на очень коротких строках.
str="Stéphane áàéèëêếe"
[[ $str =~ ${str//?/(.)} ]]
(set -- "${BASH_REMATCH[@]:1}"; IFS=$'\n'; echo "$*")
Вывод:
S
t
é
p
h
a
n
e
á
à
é
è
ë
ê
ế
e
Если можно изменить IFS и изменить позиционные параметры, вы также можете избежать вызова вспомогательной оболочки:
str="Stéphane áàéèëêếe"
[[ $str =~ ${str//?/(.)} ]]
set -- "${BASH_REMATCH[@]:1}"
IFS=$'\n'
echo "$*"
У вас есть сенсорная панель, подключенная к порту мыши PS/2 (драйвер Linux i8042, названный в честь оригинального чипа), поэтому он автоматически определяется как универсальная мышь.
Попробуйте использовать драйвер synaptics (пакеты xf86-input-synaptics
, xserver-xorg-input-synaptics
и т. д. в зависимости от дистрибутива), как рекомендуется, например, здесь.
Зайдите в /dev/input/by-path/
и определите символическую ссылку, похожую на только что найденный путь к устройству, и ссылки на текущий /dev/input/eventX
для сенсорной панели. Цифры
для устройств ввода не гарантируется стабильность при загрузке (хотя они часто бывают), поэтому лучше использовать такую символическую ссылку.
Создайте файл xorg.conf
(стандартный путь /etc/X11/xorg.conf
) со следующим разделом
Section "InputClass"
Identifier "touchpad"
Driver "synaptics"
MatchIsTouchpad "1"
MatchDevicePath "/dev/input/by-path/path_to_your_touchpad"
EndSection
Добавьте параметры Option
для его настройки. Посмотрите на /var/log/Xorg.0.log
после перезапуска X или перезагрузки, чтобы посмотреть, все ли работает.
Для получения дополнительной информации прочитайте справочную страницу драйвера и погуглите «драйвер linux synaptics» и т. Д.
Edit:
Если нет символьной ссылки /dev/input/by-path
на число, которое меняется при перезагрузке, попробуйте /dev/input/by-id
. Если это также не сработает, вам понадобится правило udev
. Сделайте
udevadm info -a -p /devices/platform/i8042/seriol/input/...
с текущим путем, это пройдет вверх по дереву пути и покажет атрибуты, которые вы можете использовать для его идентификации. Создайте новый файл правил udev
, в моей системе это будет что-то вроде /etc/udev/rules.d/70-acer-touchpad.rules
, и ваше правило, вероятно, будет выглядеть примерно так,вроде
ACTION=="add", SUBSYSTEMS=="serio", ATTRS{foo}=="foo", ATTRS{bar}="bar", SYMLINK+="input/by-id/acer-touchpad"
Детали зависят от вашей системы и атрибутов, которые вы видите, и будут нуждаться в настройке, пока она не заработает. Google «написать правило udev» для учебников и т. Д., И man udevadm
.
Править
В соответствии с выходом udevadm
,
looking at parent device '/devices/platform/i8042/serio1/input/input7':
KERNELS=="input7"
SUBSYSTEMS=="input"
DRIVERS==""
ATTRS{name}=="ImPS/2 Generic Wheel Mouse"
ATTRS{phys}=="isa0060/serio1/input0"
ATTRS{properties}=="1"
ATTRS{uniq}==""
looking at parent device '/devices/platform/i8042/serio1':
KERNELS=="serio1"
SUBSYSTEMS=="serio"
DRIVERS=="psmouse"
ATTRS{bind_mode}=="auto"
ATTRS{description}=="i8042 AUX port"
ATTRS{firmware_id}==""
ATTRS{protocol}=="ImPS/2"
ATTRS{rate}=="100"
ATTRS{resetafter}=="5"
ATTRS{resolution}=="200"
ATTRS{resync_time}=="0"
Сначала я бы попробовал ATTRS{phys}=="isa0060/serio1/input0"
. Возможно, вам нужно изменить SUBSYSTEMS=="serio"
на SUBSYSTEMS=="input"
, если это не работает.