Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

cz. 5 | Siła konsoli w systemach Uniksowych

Ze względu na brak możliwości dodania więcej niż czterech obrazków kawałek czwartej części przenoszę do piątej a raczej tworzę z niego piątą część.

[color=#007aff]Przykładowe zastosowanie dwunaste - zautomatyzowane "wciskanie" klawiszy

Zapewne nie macie pojęcia jak to może wyglądać, czy jakiś robot stuka Nam w klawiaturę na zawołanie czy też poprzez samo patrzenie w klawiaturę wciskają się klawisze - macie do tego prawo ;-)

To co opiszę jest bardzo proste, naprawdę.
Czasami zdarza się, że urządzenie ma niestandardowe przyciski których nie można znaleźć w standardowym układzie klawiatury.

Jako, że nie wiedziałem jak się zabrać za ręczne edytowanie układu klawiatury postanowiłem znaleźć wolny przycisk na klawiaturze i przypisać go temu "nieznanemu" z fizycznej klawiatury.

No więc w skrócie: Jak naciskam klawisz fizyczny to system uznaje jak bym nacisnął inny klawisz KlawiszY.
Jako "KlawiszY" wybrałem taki który niedostępny jest na mojej klawiaturze fizycznej - czyli jest wolny.

- Tutaj edytowano dnia 01.12.2010
Wybaczcie, że nie wytłumaczyłem dokładniej gdzie tu ma zastosowanie konsola, wiem spaprałem te fragment dlatego postaram się naprawić póki jest jeszczcze na głównej :)

To polecenie ustawia Mi pewien niezidentyfikowany przycisk jako ALT./usr/bin/setkeycodes e076 56

To jest użycie konsoli do zbindowania klawiszy, to jest prosty przykład, a teraz podam złożony.

Ustawiam, że po wciśnięciu niezidentyfikowanego przycisku U1 (pisze na urządzeniu) system uznaje go za przycisk z kodem 250 którego nie posiadam na klawiaturze ale jest zapisany w aktualnej mapie klawiszy dlatego jest działający i rozpoznawalny przez programy:/usr/bin/setkeycodes e058 250

Teraz poprzez xbindkeys -k sprawdzam kod tego przycisku, wyświetli Mi coś w tym stylu:m:0x0 + c:250

Otwieram .xbindkeysrc i dopisuję:"/usr/bin/gmrun" m:0x0 + c:250

Restartuję demon xbindkeys działajcy w przestrzeni użytkownika poprzez:killall xbindkeys xbindkeys

Teraz po wciśnięciu przycisku U1 uruchamia Mi się program /usr/bin/gmrun.
Bez setkeycodes przycisk nie był rozpoznawalny przez program xbindkeys ani xev, jednak teraz ten przycisk jest w pełni funkcjonalny.

Dodatkowo podzielę się z Wami moim skryptem bashowym do zmniejszania oraz zwiększania głośności:
http://wklej.org/id/429134/

Użycie: sound 1+ aby zwiększyć głośność, sound 1- aby zmniejszyć głośność

Teraz ciekawsze zastosowanie, czyli to co Was powinno zainteresować.

Sterowanie głosem

Brzmi skomplikowanie, a jednak to nic trudnego, wystarczy dobry program do rozpoznawania mowy i w zasadzie to wszystko.

Dzięki narzędziu xdotool możemy wirtualnie nacisnąć dany klawisz na klawiaturze np.

Wciśnięcie prawego przycisku myszy:/usr/bin/xdotool click 3

Wciśnięcie kombinacji ALT+F4:/usr/bin/xdotool key alt+F4

Proste prawda?

Teraz możemy w programie do rozpoznawania mowy podać takie polecenia, i np. po wypowiedzeniu słowa "zamknij okno" wywołane zostanie polecenie wciskające klawisze ALT+F4.

Sterowanie gestami myszy/ekranu dotykowego

Program easystroke pozwala na definiowanie i rozpoznawanie gestów.
Wystarczy przyporządkować kombinację klawiszy która rozpoczyna rysowanie gestu na ekranie, narysować przykładowe gesty, nadać Im funkcję np. przewijanie strony czy wywołanie polecenia.

Moim zdaniem program easystroke doskonalne rozpoznaje narysowane gesty, konfiguracja jest bardzo prosta, sam program nie obciąża zbytnio procesora ani pamięci RAM i jest nieco rozbudowany.

Osobiście ustawiłem Sobie wiele z gestów które mogę wam pokazać:

Czytaj dalej... 

Komentarze

0 nowych
StawikPiast   10 #1 30.11.2010 17:32

no tak, a gdzie tu konsola?

No i te jej super zastosowania.
Bo ze jest przydatna to wszyscy wiemy, tylko do czego jest tutaj przydatna?

webnull   9 #2 30.11.2010 17:36

@StawikPiast
Konsola to nie tylko to co widoczne na ekranie jako klient terminala, konsolą można nazwać powłokę systemu która pozwala na wykonywanie poleceń.

Gdybyś przeczytał artykuł do końca to byś wiedział gdzie opisałem konkretnie zastosowanie konsoli.

artymienek   6 #3 30.11.2010 18:17

Gesty myszy w systemie! Kolejny świetny wpis, ale za tą opcję Wielkie Gratki! :)

artymienek   6 #4 30.11.2010 18:17

Gesty myszy w systemie! Kolejny świetny wpis, ale za tą opcję Wielkie Gratki! :)

  #5 30.11.2010 18:37

@StawikPiast | 30.11.2010 17:32 :
Kiedy powłoka wykonuje skrypt, to nie ma potrzeby straszenia użytkownika nagle pojawiającym się czarnym oknem.

skandyn   9 #6 30.11.2010 21:47

Rzeczywiście ta konsola w Linuksie to już tańczy, śpiewa i gotuje.

Pozdrawiam.

  #7 30.11.2010 23:33

Fan Stargate? :)

  #8 01.12.2010 00:15

@januszek1999
Tak, fan Stargate.

  #9 01.12.2010 00:15

@januszek1999
Tak, fan Stargate.

webnull   9 #10 01.12.2010 11:35

@skandyn,artymienek
Będę stawiać jakiś program do rozpoznawania mowy to też napiszę artykuł o tym na blogu.

mati75   6 #11 01.12.2010 16:36

To konsola?
Bo mi się nie wydaje, nie wygląda jak tty.

webnull   9 #12 01.12.2010 18:56

@mati75
Konsola to nie tylko czarne okienko - to też możliwość samego wykonywania różnych poleceń z przeróżnymi parametrami używając do tego odpowiedniej składni danej powłoki.

Razi   5 #13 02.12.2010 17:14

Ze wstydem przyznam że nie wiedziałem o easystroke:( Ale teraz mogę już nie używać klawiatury do obsługi compiza ("zbindowane" gesty na skróty):D

Jakbym miał tablet to bym całe pismo odręczne zrobił xD

Konsola zapewnia bardzo prosty interfejs: wywołujesz polecenie > otrzymujesz dane które łatwo obrobić. Bez zbędnych menu i dodatkowych okien. Programiści to zrozumieją, dzieci niestety nie.

webnull   9 #14 02.12.2010 19:16

@Razi
Jesteś geniuszem!

Zrobię wpisywanie znaków przy pomocy easystroke + xdotool.

Kiedy narysuję znak byle gdzie na ekranie to easystroke go rozpozna i wykona xdotool który wpisze prawidłową literę.

"Konsola zapewnia bardzo prosty interfejs: wywołujesz polecenie > otrzymujesz dane które łatwo obrobić. Bez zbędnych menu i dodatkowych okien. Programiści to zrozumieją, dzieci niestety nie."

W istocie, jednak warto próbować przemówić do niektórych - może akurat uda się pokazać co konsola potrafi ;-)

Jaahquubel_   12 #15 03.12.2010 14:27

@webnull
Ten blogowy serial miał chyba z założenia przekonać ZU, a piszesz o rzeczach dla adminów i geeków. Co z tego, że z konsoli można dyrygować wirtualnymi serwerami. Nie tylko ZU nie ma wirtualnych serwerów, ale i ja też. A konsoli często używam.
ZU nie będzie też przerzucać w konsoli 1000 plików (ktoś, kto to robi, przestaje być ZU). ZU, jak pomyśli, posortuje sobie w Nautilusie (czy co tam ma) pliki według typu, pozaznacza hurtem i sobie przekopiuje myszą.

Nie piszesz też co to za urządzenie widać na obrazku oraz co i po co z nim robisz.

Nie podobają mi się te wpisy. Przykłady są moim zdaniem mocno chybione. Chyba sam coś w temacie konsolowym napiszę.

webnull   9 #16 03.12.2010 14:38

@Jaahquubel_
A czy ZU który kupi Tablet PC i zainstaluje na nim Linuksa nie będzie rozczarowany, że to i to nie działa i niema na to rozwiązania?

Taki przykład pokaże, że dzięki konsoli można samemu dodać funkcjonalność do danego programu czy urządzenia.

webnull   9 #17 03.12.2010 14:40

@Jaahquubel_
"Nie piszesz też co to za urządzenie widać na obrazku oraz co i po co z nim robisz."

Urządzenie ani jego zastosowanie nie są w temacie artykułu na blogu.

mgr.inz.Player   5 #18 05.12.2010 01:28

@webnull,
Wiele rzeczy, o których piszesz (mam na myśli głównie te w cz.3), można zrobić także pod Win, ale trzeba zainstalować Cygwin'a lub GnuWin32. Obecnie używam Cygwin. Oczywiście po jego zainstalowaniu wybrałem m.in. te paczki: binutils, coreutils, wget, ...

A po dopisaniu "C:\cygwin\bin" do zmiennej systemowej PATH można użyć tych narzędzi nawet w "skrypcie poleceń Windows NT" (czyli plikach z rozszerzeniem cmd).

Oczywiście nie da się tak zrobić wszystkiego z powodu ograniczeń nałożonych na skrypty *.cmd. Wtedy odpalam "linuxowe" skrypty w bash.exe z cygwina.

Na szczęście cygwin umożliwia nam korzystanie z narzędzi takich jak "grep, awk (gawk), sed"
(wraz z wyrażeniami regularnymi) oraz "ls, sort, cut, tail, top". Możemy sobie zautomatyzować pracę na kilkudziesięciu tysiącach plików nawet pod win32. Gdybym miał korzystać z explorer'a lub czegoś podobnego do "total commandera" do pracy na tylu plikach, to bym się chyba pociął z nerwów.

mgr.inz.Player   5 #19 05.12.2010 02:16

We mnie jest także odrobina dowcipnisia. Mianowicie utworzyłem kuzynowi za pomocą narzędzi z cygwina katalog nie do usunięcia/otworzenia.

Wziąłem kilka plików z cygwina na pendrive'a (mkdir.exe, mv.exe, cygwin1.dll, cygintl-8.dll, cygiconv-2.dll, cygattr-1.dll, cyggcc_s-1.dll),
skopiowałem je do nowego folderu (o nazwie "bin") na pulpicie "ofiary", odpaliłem cmd, przeszedłem w konsoli do tego folderu (cd), a potem wpisałem:

mkdir "../nicminiezrobisz..."

Utworzony folder na pulpicie ma nazwę "nicminiezrobisz...".
Pod windowsem XP oraz nowszymi nie można takiego folderu ani otworzyć, ani usunąć, a wszystko dzięki kropkom w nazwie na końcu :D


Po udanym dowcipie trzeba to jakoś odwrócić:

mv "../nicminiezrobisz..." "../nicminiezrobisz"


Dodam, że tylko niektóre (jest ich bardzo mało) programy pod Windowsem radzą sobie z tak nazwanymi folderami, np Unlocker1.90

webnull   9 #20 05.12.2010 10:33

@mgr.inz.Player
Ciekawe ale mówisz o uruchomieniu programów ze środowiska Linuksowego pod Windowsem - wciąż jest to konsola Uniksowa tylko "emulowana" pod Windowsem.

mgr.inz.Player   5 #21 05.12.2010 13:01

Narzędzia z paczek coreutils, binutils są po prostu skompilowane do używania Windowsowych API. Czyli konsoli uniksowej pod win32 w sumie nie ma.

Np sed.exe importuje funkcje z tych plików dll:
- cygwin1.dll
- cyggcc_s-1.dll
- cygiconv-2.dll
- cygintl-8.dll

A te z kolei importują funkcje z tych plików:
ADVAPI32.dll, kernel32.dll, ntdll.dll. A te z kolei importują następne.


A, dodam że nie jestem fanbojem jakiegoś systemu operacyjnego. Ja jestem po prostu za wykorzystywaniem wygodnych narzędzi.

webnull   9 #22 06.12.2010 16:29

@mgr.inz.Player
Prawda, ale programy nie są oryginalnie pod Windows i wymagają dodatkowych bibliotek "cygwin" które zapewniają jakieś tam środowisko Uniksowe czyli są *prawie* jak "Wine".

mgr.inz.Player   5 #23 07.12.2010 04:15

"programy nie są oryginalnie pod Windows".
Hej, przecież pisałem, że te programy są z Cygwina. Dodam, że sam cygwin, nie jest prawie jak "wine", bo nie pozwala uruchamiać programów skompilowanych na linuxa.

Głównie chodzi mi o to, że siłę konsoli też można poczuć pod "okienkami" i jest tak już od wielu lat.

Narzędzia są prawie identyczne w użyciu jak pod Linuchem (mam na myśli programy typu sed, grep, cat, i tak dalej). Działają nawet windowsowe ścieżki do plików (MS style path)
czyli działa np ta komenda:
cp -r "C:\Program Files" "E:\Kopia Program Files"

webnull   9 #24 07.12.2010 19:29

@mgr.inz.Player
To dobrze, że można poczuć siłę konsoli Uniksowej pod windowsem.
Jednak ja jestem zdania, że nic nie jest lepsze od oryginału który posiada pełną integrację ze wszystkim wokół.
Pod Uniksami z Uniksowej konsoli mogę kontrolować programy graficzne, sprzęt i wiele innych czynności a pod zestawem Uniksowych programów pod Windows można zapewne jedynie zarządzać plikami itp.

webnull   9 #25 07.12.2010 19:29

@mgr.inz.Player
Wiesz dzisiaj sobie skalibrowałem dobrze ekran dotykowy w Tablecie, i wiesz z konsoli było Mi dużo łatwiej.. - poszło raz dwa..