- Назначение 'горячих клавиш' для программ консоли , bagas, 10:32 , 10-Янв-20 (1)
> Здравствуйте! > Имеется Debian 9-й, без графики (консоль). Хотелось бы задать клавиши для запуска > разных программ, причём не просто будучи в bash`е, а в любой > консольной программе. Например перенести переключение консолей на Win+1,2 и т.п. задав > для Win+1 "chvt 1", для Win+Ctrl+m "mc" и тому подобное.Нельзя такое сделать. Подобное только можно сделать имею гуй. В консоли можно только назначить алиасы команд! Насчет переключения консолей не понял, это как вы планируете сделать?! ) Возможно вам подойдет вариант переключения консолей ctrl+alt+f1(2.3.4.5.7.8.9.10).
- Назначение 'горячих клавиш' для программ консоли , Айнанимм, 11:08 , 10-Янв-20 (3)
> Нельзя такое сделать.Неужели нет программ, которые бы перехватывали клавиатуру (наверно читали из /dev/input?) и запускали бы чего нибудь (system(), exec(), etc) > Подобное только можно сделать имею гуй. Про xbindkeys знаю, но нужно без гуя... > В консоли можно только назначить алиасы команд! А для алиасов горячие клавиши не назначаются? > Насчет переключения консолей не понял, это как вы планируете сделать?! ) > Возможно вам подойдет вариант переключения консолей ctrl+alt+f1(2.3.4.5.7.8.9.10). Там есть ctrl+alt+Fx и alt+Fx, а я хочу как у меня на i3 - Win+1(2,3,4,5...)
- Назначение 'горячих клавиш' для программ консоли , bagas, 11:46 , 10-Янв-20 (5)
>[оверквотинг удален] > Неужели нет программ, которые бы перехватывали клавиатуру (наверно читали из /dev/input?) > и запускали бы чего нибудь (system(), exec(), etc) >> Подобное только можно сделать имею гуй. > Про xbindkeys знаю, но нужно без гуя... >> В консоли можно только назначить алиасы команд! > А для алиасов горячие клавиши не назначаются? >> Насчет переключения консолей не понял, это как вы планируете сделать?! ) >> Возможно вам подойдет вариант переключения консолей ctrl+alt+f1(2.3.4.5.7.8.9.10). > Там есть ctrl+alt+Fx и alt+Fx, а я хочу как у меня на > i3 - Win+1(2,3,4,5...) Что есть i3 ?
- Назначение 'горячих клавиш' для программ консоли , ACCA, 10:36 , 10-Янв-20 (2)
> Имеется Debian 9-й, без графики (консоль). Хотелось бы задать клавиши для запуска > разных программ, причём не просто будучи в bash`е, а в любой > консольной программе. Например перенести переключение консолей на Win+1,2 и т.п. задав > для Win+1 "chvt 1", для Win+Ctrl+m "mc" и тому подобное.В общем случае - никак. bash пользуется readline, а кто-то пользуется только termios. Кроме того, о юный падаван, открой для себя screens, tmux, muck, dvtm и ещё кучу подобных. Это если не упоминать терминалы в X11/Gnome/KDE/Xfce/... и SSH. bash в десяточке - это левая шняга.
- Назначение 'горячих клавиш' для программ консоли , Айнанимм, 11:17 , 10-Янв-20 (4)
>bash пользуется readline...А этот readline позволяет запускать программы? Вроде бы как-то через bind можно для readline задавать хоткеи. > Кроме того, о юный падаван, открой для себя screens, tmux, muck, dvtm > и ещё кучу подобных. А там можно менять клавиатурные сокращения? Хочу хоть как-то унифицировать горячие клавиши. На настольном ПК i3wm, ноутбук слабенький, там гуй не поворотный, консоли для работы хватает. > Это если не упоминать терминалы в X11/Gnome/KDE/Xfce/... и SSH. В Х11 можно назначать клавиши на любое приложение (xbindkeys). Про SSH - а там можно назначит клавиши для удалённой консоли? > bash в десяточке - это левая шняга. На ноуте 9-й дебиан.
- Назначение 'горячих клавиш' для программ консоли , ACCA, 02:47 , 12-Янв-20 (10)
> А этот readline позволяет запускать программы? Вроде бы как-то через bind можно Разумеется, нет. Это не его работа. Запускает bash. > для readline задавать хоткеи.
Не всякие, там куча осмысленных ограничений. man termcap. >> Кроме того, о юный падаван, открой для себя screens, tmux, muck, dvtm >> и ещё кучу подобных. > А там можно менять клавиатурные сокращения? Хочу хоть как-то унифицировать горячие клавиши.
Можно, но не нужно. Ты убьёшь кучу времени, настроишь какие-то бесполезные Win+1. Потом тебе попадётся клава без Win - например Apple Aluminium. Кнопка яблока там есть, но работает она по-другому. Хотя с виду почти такая же. > В Х11 можно назначать клавиши на любое приложение (xbindkeys). > Про SSH - а там можно назначит клавиши для удалённой консоли?
Разумеется, нет. Ты не знаешь, кто у тебя консоль на той стороне SSH. Там может оказаться Cisco IOS или вообще z/OS с termios под IBM-овскую клаву. 20 функциональных клавиш и ни одной Win, прикинь? Начни читать начиная с
man termcap Пока ты не понимаешь, что ты делаешь. Консоль Unix - это совсем не клава с монитором. Твой Debian 9 обязан работать с кучей консолей, причём одновременно. Среди этих консолей есть даже телетайп. Подстраивать его под конкретную клаву можно, но сложно и не нужно. Сильно быстрее выучить дефолтные настройки и не делать себе мозг.
- Назначение 'горячих клавиш' для программ консоли , Айнанимм, 10:21 , 12-Янв-20 (13)
>man termcapПоизучаю. Спасибо. Ещё бы русских манов бы в систему... > Можно, но не нужно. > Потом тебе попадётся клава без Win - например Apple Aluminium. Кнопка > яблока там есть, но работает она по-другому. Это попытка унифицировать работу на старом ноутбуке (консоль, редко софтина в X) и настольном ПК (i3wm с двумя мониторами). Всё равно работа за чужим ПК это всегда неудобство. >>SSH >Ты не знаешь, кто у тебя консоль на той стороне Это да, просто SSH был упомянут Вами, вот и спросил. > Начни читать начиная с man termcap
Уже. Спасибо. > Пока ты не понимаешь, что ты делаешь. Что - понимаю. Частичную идентичность в работе на двух разных машинах. А вот как я этого могу добиться - тут да, не понимаю. "Иду на ощупь ног" > Подстраивать его под конкретную клаву можно, но сложно и не нужно. Зато порой интересно :) >Сильно быстрее выучить дефолтные настройки и не делать себе мозг. К сожалению "дефолтные настройки" у каждого свои. Даже для переключения раскладки...
- Назначение 'горячих клавиш' для программ консоли, anonymous, 18:31 , 10-Янв-20 (7) +1
> Здравствуйте! > Имеется Debian 9-й, без графики (консоль). Хотелось бы задать клавиши для запуска > разных программ, причём не просто будучи в bash`е, а в любой > консольной программе. Например перенести переключение консолей на Win+1,2 и т.п. задав > для Win+1 "chvt 1", для Win+Ctrl+m "mc" и тому подобное.Костыляйте в screen, он позволяет назначать хоткеи (уверен tmux тоже подойдёт, но я не пользовался). А вообще как-то упорото звучит, когда есть автодополнение.
- Назначение 'горячих клавиш' для программ консоли, Айнанимм, 10:08 , 11-Янв-20 (8)
> ... screen, он позволяет назначать хоткеиscreen позволяет назначать произвольные хоткеи для произвольных приложений? Спасибо, гляну... > ... как-то упорото звучит, когда есть автодополнение. автодополнение работает только в шеле (bash), в других программах оно неизвестно. да и изначальное желание - переключение между виртуальными консолями по Win+цифра.
- Назначение 'горячих клавиш' для программ консоли, Аноним, 21:07 , 11-Янв-20 (9)
> переключение между виртуальными консолями по Win+цифра.Это ядро надо патчить, управление виртуальными консолями там. Но можно переключать не виртуальные консоли, а табы tmux'а или screen'а — это полностью настраиваемо. Также в них можно биндить клавиши на создание табов с определённой командой (tmux bind -n M-m new-window mc).
- Назначение 'горячих клавиш' для программ консоли , Айнанимм, 10:01 , 12-Янв-20 (11)
Выдалось время - "накостылил": <code> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <linux/input.h> int main(int argc, char *argv[]){ FILE *fp; char keyPress [255]; int i, debug; for (i = 0; i < 255 ; i++) keyPress [255] = 0; struct input_event ev[64]; int fd, rd, value, size = sizeof (struct input_event); if ((fd = open ("/dev/input/event1", O_RDONLY)) == -1) printf ("/dev/input/event1 is not a vaild device.\n" ); while (1){ if ((rd = read (fd, ev, size * 64)) < size) printf ("Error read()"); value = ev[0].value; if (value != ' ' && ev[1].value == 0 && ev[1].type == 1){ keyPress[ev[1].code] = 0; if (debug) printf ("Отпустил клавишу с кодом %d \n", (ev[1].code)); } if (value != ' ' && ev[1].value == 1 && ev[1].type == 1){ keyPress[ev[1].code] = 1; if (debug) printf ("Нажал клавишу с кодом %d\n", (ev[1].code)); } // 125 -code key "Win", 2 - code key "1", 3 -code key "2" ... if (keyPress[125] == 1 && keyPress[2] == 1) system("chvt 1"); if (keyPress[125] == 1 && keyPress[3] == 1) system("chvt 2"); if (keyPress[125] == 1 && keyPress[4] == 1) system("chvt 3"); if (keyPress[125] == 1 && keyPress[5] == 1) system("chvt 4"); if (keyPress[125] == 1 && keyPress[6] == 1) system("chvt 5"); if (keyPress[125] == 1 && keyPress[7] == 1) system("chvt 6"); if (keyPress[125] == 1 && keyPress[8] == 1) system("chvt 7"); if (keyPress[125] == 1 && keyPress[9] == 1) system("chvt 8"); if (keyPress[125] == 1 && keyPress[10] == 1) system("chvt 9"); if (keyPress[125] == 1 && keyPress[11] == 1) system("chvt 10"); } fclose(fp); return 0; } </code> Вылез косяк - при нажатии на клавиши печатается в терминале ^[1 ^[2 и т.п. Как победить? printf("%c%c", 8, 8); как ожидалось не помогает
|