Низкоуровневый переключатель клавиатуры LoLo Switcher 0.20

Выпущен стабильный релиз низкоуровневого локального переключателя клавиатуры LoLo Switcher v.0.20 для X11. LoLo Switcher работает как процесс на низком системном уровне, и получает данные от клавиатуры напрямую из устройства ввода. Обнаружив нужную последовательность кодов, LLS вызывает функции X11, отвечающие за переключение раскладки.

Особенности программы:

  • Функционирует в любых окружениях рабочего стола (KDE3, KDE4, GNOME2, LXDE);

  • Поддерживает любые модели клавиатур и джойстиков;

  • Работает напрямую с устройством ввода;

  • Предельная компактность, скорость работы, близкая к нулю нагрузка на систему;

  • Прозрачная работа параллельно с другими переключателями клавиатуры;

  • Феноменально гибкие возможности настройки;

  • Встроенные средства диагностики устройства ввода.

Фильтрация и отслеживание событий клавиатуры настраивается с помощью регулярных выражений. Благодаря этому, переключатель можно настроить на любую экзотическую клавиатурную комбинацию. Настраивается даже срабатывание по отжатию клавиш. По-умолчанию переключатель настроен на два языка, переключение на язык происходит напрямую при отжатии левого и правого SHIFT.

Источник — http://www.opennet.ru/opennews/art.shtml?num=31755
Главная ссылка к новости — http://webhamster.ru/site/page/index/ar … ctcode/180

Был, был и весь вышел...

2 (15.09.2011 01:08:54 отредактировано zenon)

Упс это тот же кто mytetra написал?
да это он http://linuxforum.ru/profile.php?id=18457
http://linuxforum.ru/viewtopic.php?id=15067
Предвижу тучу холиваров, на ЛОРе точно бойня будет.
Удачи автору!

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

3 (15.09.2011 03:08:51 отредактировано Fat-Zer)

на amd64 из коробки не взлетает...

/tmp/loloswitcher_0_20/Main.cpp:628: ошибка: cast from ‘void*’ to ‘int’ loses precision

ИМХО уместно заменить (int) в приведении на (size_t).

есть ещё парочка замечаний по cmake'у...

95% процентов проблем находятся между клавиатурой и стулом.

4

OLOLO Swither :lol:

АХАХХАХААХАХАХХАХАХ!!!11
То есть "Мяу"

5

Dimaty, для некоторых весьма нужная вещь. Например, для тех, кто общается/работает не только в пределах России smile

Linux Mint 19.3 Mate Edition
Windows 7

6

Wolfenberg, вы говорите, будто это что-то необычное... это же обычный переключатель раскладок...

95% процентов проблем находятся между клавиатурой и стулом.

7

LoLo Switcher_типа_альтернатива_IIунто_свитчеpу_и_xNeur?

8

newzenon пишет:

Упс это тот же кто mytetra написал?
Предвижу тучу холиваров, на ЛОРе точно бойня будет.

Она уже была: http://www.linux.org.ru/forum/desktop/6719991

Кратко, новость про версию 0.15 не подтверждая слили в толксы. Мне даже сообщили что я специально написал переключатель, чтобы эффективно на лоре троллить. Про версию 0.20 я на лоре уже не заикался, ограничился опеннетом.

9

Fat-Zer пишет:

на amd64 из коробки не взлетает...

/tmp/loloswitcher_0_20/Main.cpp:628: ошибка: cast from ‘void*’ to ‘int’ loses precision

ИМХО уместно заменить (int) в приведении на (size_t)

Да, есть такое. Мне на лоре посоветовали:

> А как же тогда правильно передавать переменные в потоковую функцию??

В данном случае ты передаешь int и sizeof(int) <= sizeof(void*), поэтому можно передать так

int result = pthread_create(&thread, NULL, threadFunc, (void*)keyboardLayerNum);

Видимо, не учли 64-х битных особенностей, а я в них можно сказать никак не разбираюсь.

То есть, нужно писать:

size_t keyboardLayerNum=(size_t) n;
int result = pthread_create(&thread, &threadAttr, threadFunc, (void*)keyboardLayerNum);
...
static void *threadFunc(void *arg)
{ 
 int keyboardLayerNum = (size_t) arg;
...

Я правильно понял? Тогда на x64 станет собираться?

10

xintrea пишет:

Я правильно понял? Тогда на x64 станет собираться?

да, именно так...
ещё мелочи:

625 static void *threadFunc(void *arg)
626 {
...
632  sprintf(cmd, config.getCommand(keyboardLayerNum));

это ну очень крутой strcpy... :lol: ну и так несколько раз...

по поводу cmake'а: не решайте за других, что им нужно и куда это положить...
как вариант:

cmake_minimum_required(VERSION 2.6)

# set(CMAKE_BUILD_TYPE Debug)
if(NOT DEFINED CMAKE_BUILD_TYPE) 
    set(CMAKE_BUILD_TYPE Release)
endif

set(PROJECT loloswitcher)

# set(CMAKE_CXX_FLAGS "-O0")
set_source_files_properties(EventQueue.cpp PROPERTIES COMPILE_FLAGS "-O0")

project(${PROJECT})

set(HEADERS
    Main.h
    KeyLayout.h
    Config.h
    ParseHelper.h
    EventQueue.h)
set(SOURCES 
    Main.cpp
    KeyLayout.cpp
    Config.cpp
    ParseHelper.cpp
    EventQueue.cpp)

link_libraries(
    X11
    pcre
    pthread)

add_executable (${PROJECT} ${HEADERS} ${SOURCES})

install(TARGETS loloswitcher DESTINATION ${CMAKE_INSTALL_PREFIX}/sbin)

# install(SCRIPT postinstall.cmake)
install(CODE "EXEC_PROGRAM(chown ARGS root:root ${CMAKE_INSTALL_PREFIX}/sbin/loloswitcher)") 
install(CODE "EXEC_PROGRAM(chmod ARGS u+s ${CMAKE_INSTALL_PREFIX}/sbin/loloswitcher)")  

ещё не уверен в предпоследней строчке... но не знаю, как это правильно сделать...

95% процентов проблем находятся между клавиатурой и стулом.

11 (16.09.2011 12:12:23 отредактировано dsmith)

Я не понял, как он настраивается.
При наборе команд в терминале что будет? При вводе пароля?
(вживую не смотрел, пока просто интересно)

12

> Я не понял, как он настраивается.

Настраивается через файл конфигурации, ~/.config/loloswitcher/config.ini


> При наборе команд в терминале что будет? При вводе пароля?

Это переключатель для X11, в чистой консоли он не работает. Касаемо терминалов, работает в эмуляторах терминалов, запущенных в X11: Konsole, GnomeTerm, XTerm и т.д.

13

xintrea пишет:

Касаемо терминалов, работает в эмуляторах терминалов, запущенных в X11: Konsole, GnomeTerm, XTerm и т.д.

Тут интереснее, как он будет определять язык при вводе пароля?

Был, был и весь вышел...

14

Lupo Alberto пишет:

Тут интереснее, как он будет определять язык при вводе пароля?

Определять язык _где_? Он работает в X11. При вводе пароля в любой программе в X11 будет тот язык, который выбрал в данный момент пользователь. Я наверно не понял вопроса.

15

Lupo Alberto пишет:

Обнаружив нужную последовательность кодов, LLS вызывает функции X11, отвечающие за переключение раскладки.

Как я понял, это не просто переключатель раскладки, но определитель языка ввода. Поэтому и возник вопрос — как будет определяться язык при вводе пароля, ведь чаще всего это бессмысленный набор букв? К тому же при вводе пароля символы не отображаются, и пользователь не может во время заметить ошибку в раскладке.

Был, был и весь вышел...

16 (18.09.2011 00:54:36 отредактировано dsmith)

Скорее вы не в курсе предыстории, xintrea  smile
xNeur очень любил переключать язык во время ввода пароля (или какой-нибудь заковыристой команды, к примеру). поэтому задавались приложения-исключения, в которых он не действовал.

17

dsmith пишет:

Как я понял, это не просто переключатель раскладки, но определитель языка ввода.

нет, это просто переключатель раскладки smile... где вы тут увидели хоть намёк на определение языка ввода?

95% процентов проблем находятся между клавиатурой и стулом.

18

Fat-Zer пишет:

где вы тут увидели хоть намёк на определение языка ввода?

Lupo Alberto пишет:

и получает данные от клавиатуры напрямую из устройства ввода. Обнаружив нужную последовательность кодов, LLS вызывает функции X11, отвечающие за переключение раскладки.

Был, был и весь вышел...

19 (18.09.2011 10:28:18 отредактировано Fat-Zer)

Lupo Alberto пишет:

Обнаружив нужную последовательность кодов

это шифтальт/шифткотрол итп....

кстати, к автору вопрос:
возможно использовать для одного языка "прямой", а для двух других "циклический" метод переключения? тут где-то ветка с месяц назад была по этому вопросу...

95% процентов проблем находятся между клавиатурой и стулом.

20

Вообще не понимаю смысл данной программы, ведь переключение раскладок и в иксах настроить можно на любую клавишу :O
Ничего не понимаю...

АХАХХАХААХАХАХХАХАХ!!!11
То есть "Мяу"

21

Dimaty пишет:

Ничего не понимаю...

Аналогично ac

Был, был и весь вышел...

22

Например,

Lupo Alberto пишет:

Настраивается даже срабатывание по отжатию клавиш.

Если правильно путаю, то аналогичный патч до сих пор не принят в основное дерево X.org.
Без этой функции назначение переключателя на комбинации Ctrl+Shift или Alt+Shift не имеет большого смысла, ибо автоматом исключают содержащие их сочетания из доступных приложениям шоткатов (поэтому и пользуюсь CapsLock, с ним не не настолько много общеупотребительных сочетаний).