Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Скрипт переключения раб.стола по кнопке.  (Прочитано 3081 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн jack_solovey

  • Автор темы
  • Активист
  • *
  • Сообщений: 905
  • Mate, и никаких Unity
    • Просмотр профиля
Помогите пожалуйста решить такую задачу.
На ноутбуке имеется
1. рабочее окружение Mate
2. Два рабочих стола (влево-вправо). хоткеи CTRL+ALT+Left и CTRL+ALT+Right отрабатывают переключение.
3. функциональная кнопка не подписанная, выглядит как часть декора но в xev дает keycode = 248

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

Поможите пожалуйста.

P.S. хотя xev кейкод показывает, программа "Комбинации клавишь клавиатуры" кнопку эту никак не обнаруживает.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт переключения раб.стола по кнопке.
« Ответ #1 : 20 Октября 2015, 18:22:05 »
Тогда Вам стоит найти команду показывающую номер активного стола и команду производящую переключение. Типа wmctl
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн jack_solovey

  • Автор темы
  • Активист
  • *
  • Сообщений: 905
  • Mate, и никаких Unity
    • Просмотр профиля
Re: Скрипт переключения раб.стола по кнопке.
« Ответ #2 : 20 Октября 2015, 18:35:56 »
и команду производящую переключение. Типа wmctl
Так, одна функия из 3х есть, спасибо.
Осталось узнать как по кнопке запустить скрипт, и как определить текущий рабочий стол.

Оффлайн jack_solovey

  • Автор темы
  • Активист
  • *
  • Сообщений: 905
  • Mate, и никаких Unity
    • Просмотр профиля
Re: Скрипт переключения раб.стола по кнопке.
« Ответ #3 : 21 Октября 2015, 19:17:25 »
Для запуска скрипта попробовал xbindkeys прописал все как написано тут https://wiki.archlinux.org/index.php/Xbindkeys_(Русский)
Сделал запуск калькулятора для тестирования.
НО запуск не происходит, а команда xbindkeys -n выдает текст о том, что пардон ничего не выходит потому что кто-то другой перехватывает кнопку.
Не понимаю этого.
xev ее видит, а когда "Комбинации клавиш клавиатуры" перехватывает что-либо, то xev эту копку уже не отлавливает.

Набрел еще на https://xakep.ru/2008/04/02/43067/
Инструкцию как прописать кейкоды в .Xmodmap , но похоже такие конфигурационные клавиши уже не используются в Ubuntu/Mint+Mate

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6754
  • 20% Cooler
    • Просмотр профиля
Re: Скрипт переключения раб.стола по кнопке.
« Ответ #4 : 21 Октября 2015, 19:28:24 »
jack_solovey,
что за кнопка-то, полностью вывод xev про неё покажите
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн jack_solovey

  • Автор темы
  • Активист
  • *
  • Сообщений: 905
  • Mate, и никаких Unity
    • Просмотр профиля
Re: Скрипт переключения раб.стола по кнопке.
« Ответ #5 : 21 Октября 2015, 19:49:14 »
jack_solovey,
что за кнопка-то, полностью вывод xev про неё покажите

MappingNotify event, serial 40, synthetic NO, window 0x0,
    request MappingKeyboard, first_keycode 8, count 248

KeyPress event, serial 40, synthetic NO, window 0x4400001,
    root 0x2ca, subw 0x0, time 3307293, (121,-18), root:(992,462),
    state 0x10, keycode 248 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 40, synthetic NO, window 0x4400001,
    root 0x2ca, subw 0x0, time 3307293, (121,-18), root:(992,462),
    state 0x10, keycode 248 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6754
  • 20% Cooler
    • Просмотр профиля
Re: Скрипт переключения раб.стола по кнопке.
« Ответ #6 : 21 Октября 2015, 19:57:03 »
ну вот, кнопки-то и нет
Цитировать
keysym 0x0, NoSymbol

надо искать, как заставить ядро видеть эту кнопку

возможно, поможет http://juliano.info/en/Blog:Memory_Leak/Linux,_KDE:_Mapping_functions_to_extra_keys
« Последнее редактирование: 21 Октября 2015, 20:07:51 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн jack_solovey

  • Автор темы
  • Активист
  • *
  • Сообщений: 905
  • Mate, и никаких Unity
    • Просмотр профиля
Re: Скрипт переключения раб.стола по кнопке.
« Ответ #7 : 22 Октября 2015, 19:43:06 »
ну вот, кнопки-то и нет
Цитировать
keysym 0x0, NoSymbol

надо искать, как заставить ядро видеть эту кнопку

возможно, поможет http://juliano.info/en/Blog:Memory_Leak/Linux,_KDE:_Mapping_functions_to_extra_keys

Разве keycode не достаточно для того чтобы создать обработчик события нажатия? Зачем символьная ассоциация кнопки с чем бы то нибыло?
Я по ссылке посмотрел, пока мало, что понял, о том что надо делать с ядром. (в жизни никогда в ядро не лазал и ничего про него не знаю)

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6754
  • 20% Cooler
    • Просмотр профиля
Re: Скрипт переключения раб.стола по кнопке.
« Ответ #8 : 22 Октября 2015, 20:24:40 »
про ядро я тут сглупил, конечно... не ядро, а иксы
Цитировать
Разве keycode не достаточно для того чтобы создать обработчик события нажатия?
Думаю, что нет. На старых версиях бунты у меня на ноуте самсунг такая же история была


Пользователь решил продолжить мысль [time]22 Октябрь 2015, 20:29:05[/time]:
посмотрел по нашему форуму - информации достаточно много,
https://forum.ubuntu.ru/index.php?topic=77008
https://forum.ubuntu.ru/index.php?topic=76463.0

Пользователь решил продолжить мысль 22 Октября 2015, 20:34:58:
вот кстати, точно про вашу проблему и описание, почему просто keycode не заработает
http://www.tux.in.ua/articles/458
« Последнее редактирование: 22 Октября 2015, 20:34:58 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн jack_solovey

  • Автор темы
  • Активист
  • *
  • Сообщений: 905
  • Mate, и никаких Unity
    • Просмотр профиля
Re: Скрипт переключения раб.стола по кнопке.
« Ответ #9 : 07 Ноября 2015, 09:02:05 »
прописал в файл /home/user/.Xmodmap строку.
keycode 248 = XF86New
Запустил в терминале
xmodmap .Xmodmap
В программе mate-keybinding-properties (Комбинации клавиш клавиатуры) задал действие "Домашняя папка" для XF86New

Клавиша срабатывает.

Прописал в mate-session-properties (Запускаемые приложения) команду из терминала.

Перезапускаю сессию.
Не работает.
Запускаю снова команду в терминале, но все равно не работае. Нужно зайти в mate-keybinding-properties  и снова переназначить клавишу, тогда срабатывает.

Проблема однако... :(

Оффлайн lexikon

  • Участник
  • *
  • Сообщений: 156
  • Ubuntu: 15.10
    • Просмотр профиля
Re: Скрипт переключения раб.стола по кнопке.
« Ответ #10 : 12 Ноября 2015, 16:56:41 »
jack_solovey, получилось решить проблему? есть точно такая же клавиша) keycode 248

в моем случае xev выглядит так:
Цитировать
KeyPress event, serial 41, synthetic NO, window 0x6c00001,
    root 0xd6, subw 0x0, time 422326, (69,-19), root:(69,10),
    state 0x10, keycode 248 (keysym 0x1008ff33, XF86MyComputer), same_screen YES,
    XKeysymToKeycode returns keycode: 165
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 41, synthetic NO, window 0x6c00001,
    root 0xd6, subw 0x0, time 422326, (69,-19), root:(69,10),
    state 0x10, keycode 248 (keysym 0x1008ff33, XF86MyComputer), same_screen YES,
    XKeysymToKeycode returns keycode: 165
    XLookupString gives 0 bytes:
    XFilterEvent returns: False
Пытаюсь назначить на нее любое действие, назначается, но ничего не происходит((
« Последнее редактирование: 12 Ноября 2015, 17:31:52 от lexikon »

Оффлайн jack_solovey

  • Автор темы
  • Активист
  • *
  • Сообщений: 905
  • Mate, и никаких Unity
    • Просмотр профиля
Re: Скрипт переключения раб.стола по кнопке.
« Ответ #11 : 12 Ноября 2015, 20:34:17 »
получилось решить проблему?
Нет.

adawdp

  • Гость
Re: Скрипт переключения раб.стола по кнопке.
« Ответ #12 : 12 Ноября 2015, 21:19:00 »
2015 Nov 12; 01:18 PM; Oakville, ON, Canada.

jack_solovey, посмотрите wmctrl, я её использовал, правда для окон (пол compiz'a заменяет :)). В Ubuntu есть в системе при установке, по-моему…

— Что-то там про столы пишется, но я не разбирался… посмотрите а вдруг как-то можно применить.
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 12 Ноября 2015, 21:25:05 от adawdp »

Оффлайн lexikon

  • Участник
  • *
  • Сообщений: 156
  • Ubuntu: 15.10
    • Просмотр профиля
Re: Скрипт переключения раб.стола по кнопке.
« Ответ #13 : 13 Ноября 2015, 01:15:32 »
jack_solovey,
http://askubuntu.com/questions/332053/asus-n56v-instant-key
оказывается работает без проблем следующий вариант
Цитировать
keycode 248 = F13

Оффлайн Tamer4

  • Активист
  • *
  • Сообщений: 695
    • Просмотр профиля
Re: Скрипт переключения раб.стола по кнопке.
« Ответ #14 : 13 Ноября 2015, 08:04:55 »
Список опций wmctrl
(Нажмите, чтобы показать/скрыть)
Определить текущий рабочий стол:
wmctrl -d | grep '* DG'например:
tamer@tamer-linux:~$ wmctrl -d | grep '* DG'
0  * DG: 1920x1080  VP: 0,0  WA: 0,0 1920x1043  1
Перейти на стол №Х:
wmctrl -s Xгде Х номер рабочего стола (отображается слева 0,1,2,3), например:
tamer@tamer-linux:~$ wmctrl -d
0  * DG: 1920x1080  VP: 0,0  WA: 0,0 1920x1043  1
1  - DG: 1920x1080  VP: N/A  WA: 0,0 1920x1043  2
2  - DG: 1920x1080  VP: N/A  WA: 0,0 1920x1043  3
3  - DG: 1920x1080  VP: N/A  WA: 0,0 1920x1043  4

« Последнее редактирование: 13 Ноября 2015, 08:10:00 от Tamer4 »

 

Страница сгенерирована за 0.067 секунд. Запросов: 25.