Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: PaperNick в Apr 26, 2016, 11:18



Титла: Как да засека дали даден клавиш е натиснат - Bash скрипт
Публикувано от: PaperNick в Apr 26, 2016, 11:18
Здравейте, опитвам се да направя прост скрипт, който да върши няколко последователни неща.

Наскоро открих, че в Xfce мога да изпълнявам командата xfce4-popup-[name-of-plugin], която активира (показва) дадения плъгин. След това мое откритие реших да си направя скрипт, който да paste-ва от историята на clipboard-а.

Код
GeSHi (Bash):
  1. #!/bin/bash
  2. $(xfce4-popup-clipman)
  3.  
  4. while :
  5. do
  6. # I need some global read event, because read works only in the console
  7. read -n 1 key
  8.  
  9. if [[ "$key" = '' ]]
  10. then
  11. # Enter, space or something that produces empty string is pressed
  12. break
  13. fi
  14. done
  15.  
  16. $(xdotool key ctrl+v)

Идеята е проста:
1) Покажи ми историята на clipboard-a чрез xfce4-clipman-plugin
2) Слушай за натискане на Enter (чрез стрелките навигирам из историята, когато натисна Enter променям clipboard-а)
3) След това симулирай Paste чрез xdotool

Това общо взето работи, но скриптът засича натискането на Enter само под конзолата. Когато вържа скрипта към клавишна комбинация, read не бачка. Та, има ли някакъв глобален начин да слушам за натискане на клавиш?


Титла: Re: Как да засека дали даден клавиш е натиснат - Bash скрипт
Публикувано от: Yasen6275 в Apr 26, 2016, 20:42
Няма как да очакваш от баш скрипт да следи какво се случва в графичната среда. Поне не без външна програма.

Нещото което ти трябва е да разбереш как се правят шорткъти в xfce.


Титла: Re: Как да засека дали даден клавиш е натиснат - Bash скрипт
Публикувано от: PaperNick в Apr 26, 2016, 21:58
Нещото което ти трябва е да разбереш как се правят шорткъти в xfce.
За application shortcuts ли става въпрос, че нещо не мога да зацепя? Ако да, как биха решили моя проблем?


Титла: Re: Как да засека дали даден клавиш е натиснат - Bash скрипт
Публикувано от: korea60 в Apr 28, 2016, 15:26
Може би трябва да търсите \n или пък $var -eq 0, не е пробвани но би трябвало и двете да работят


Титла: Re: Как да засека дали даден клавиш е натиснат - Bash скрипт
Публикувано от: cybercop в Apr 28, 2016, 15:50
Нещото което ти трябва е да разбереш как се правят шорткъти в xfce.
За application shortcuts ли става въпрос, че нещо не мога да зацепя? Ако да, как биха решили моя проблем?
Думата се използва, както за "пряк път", така и за "бързи клавиши" в зависимост от контекста. Само, че не в този абсурден вид. Клавишни комбинации за програма (бързи клавиши) е ясно, откъде се задават в графичната среда. Не виждам, обаче това с какво ще ти помогне за засичането на активирането на бутон.