- Нельзя такое сделать Подобное только можно сделать имею гуй В консоли можно толь, bagas (ok), 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).
- В общем случае - никак bash пользуется readline, а кто-то пользуется только ter, ACCA (ok), 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 в десяточке - это левая шняга.
- Костыляйте в screen, он позволяет назначать хоткеи уверен tmux тоже подойдёт, н, anonymous (??), 18:31 , 10-Янв-20 (7) +1
> Здравствуйте! > Имеется Debian 9-й, без графики (консоль). Хотелось бы задать клавиши для запуска > разных программ, причём не просто будучи в bash`е, а в любой > консольной программе. Например перенести переключение консолей на Win+1,2 и т.п. задав > для Win+1 "chvt 1", для Win+Ctrl+m "mc" и тому подобное.Костыляйте в screen, он позволяет назначать хоткеи (уверен tmux тоже подойдёт, но я не пользовался). А вообще как-то упорото звучит, когда есть автодополнение.
- Выдалось время - накостылил code include stdlib h include stdio h includ, Айнанимм (?), 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); как ожидалось не помогает
|