nkb send

Wpisuje jedną wartość z paczki w pole, które ma fokus klawiatury. Na Windows.

nkb send <pack> [--index N] [--delay S] [--clear]

Jak go używać?

Podaj paczkę i, z --index, którą wartość. Polecenie domyślnie czeka trzy sekundy, żeby był czas kliknąć w pole, a potem wpisuje tam wartość:

$ nkb send magic-values --index 2 --delay 3

Wartość trafia do okna z fokusem, a nie na standardowe wyjście, a wszystko, co mówi polecenie, idzie na standardowe wyjście błędów. Dodaj --clear, żeby najpierw wyczyścić bieżący wiersz pola klawiszami Home, Shift+End i Delete, tak jak paleta robi domyślnie. Bez tej opcji jedyne wysyłane klawisze to znaki samej wartości.

Kiedy odmawia?

Odmawia, zamiast zgadywać, a każda odmowa kończy się kodem wyjścia 4:

  • gdy na klawiaturze wciśnięty jest Ctrl, Alt, Shift albo Win, po odczekaniu do dwóch sekund na ich puszczenie, bo wartość zamieniłaby się w skróty,
  • w oknie działającym z wyższymi uprawnieniami niż nkb, na przykład w aplikacji uruchomionej jako administrator, bo Windows odrzuciłby naciśnięcia bez słowa,
  • gdy fokus klawiatury jest na przycisku, odnośniku, elemencie listy albo stronie, której nie da się edytować, bo klawisze działają tam na tę kontrolkę.

Gdy nie potrafi rozpoznać, co ma fokus, wysyła. Z --clear czyści tylko fokus, o którym wie na pewno, że jest polem tekstowym, i nigdy terminal, gdzie te klawisze trafiają do programu, który w nim działa. Gdy pomija czyszczenie, mówi o tym, a wartość dochodzi do tego, co już było w polu.

Czy mogę go zatrzymać?

Naciśnij Escape. Nic więcej nie zostanie wpisane, polecenie powie, ile z wartości dotarło, i zakończy się kodem 4. Escape należy do polecenia tylko w trakcie wpisywania. Przed i po klawisz należy do aplikacji.

Czy działa na macOS i Linuksie?

Jeszcze nie. Tam polecenie mówi, że nie ma sposobu, żeby dostarczyć naciśnięcia, i kończy się kodem 4. Więcej mówią Uczciwe ograniczenia.

Opcje

--index N

która wartość, licząc od 1 w kolejności paczki (domyślnie: 1). Kolejność wartości to kolejność testowania.

--delay S

ile sekund najpierw czekać, żeby zdążyć kliknąć w cel (domyślnie: 3). Podaj 0, gdy fokus ustawia coś innego.

--clear

najpierw naciska Home, Shift+End, Delete i czyści bieżący wiersz pola. Nigdy nie zaznacza poza wierszem, więc pole wielowierszowe zachowuje pozostałe wiersze. Bez tego przełącznika jedyne wysyłane klawisze to znaki samej wartości.

-h, --help

Pokazuje tę pomoc i kończy kodem 0

Kody wyjścia

Pomoc tego polecenia nie wymienia własnych kodów wyjścia. Liczby znaczą to samo w każdym poleceniu: Kody wyjścia

Pomoc, tak jak wypisuje ją program

Co wypisuje nkb send --help (nkb 0.1.0).

nkb send - type one value into the focused field

Usage:
  nkb send <pack> [--index N] [--delay S] [--clear]

Put one value of a pack into whatever field has the keyboard focus.

Options:
  --index N      which value, counting from 1 in the pack's own order
                 (default: 1). The order of values is the order of testing.
  --delay S      seconds to wait first, so you can focus the target
                 (default: 3). Use 0 when something else focuses it.
  --clear        press Home, Shift+End, Delete first, clearing the current
                 line of the field. Never selects beyond the line, so a
                 multi-line field keeps its other lines. Without this switch
                 the only keys sent are the value's own characters.
  -h, --help     Show this help and exit with 0

The value goes to the focused window, not to standard output.
Everything you read here is on standard error.
Nothing is sent while Ctrl, Alt, Shift or Win is held on the keyboard:
the command waits up to two seconds for them to come up, then refuses.
Nothing is sent to a window running with higher privileges than nkb,
such as an application started as administrator: the system would drop
the keystrokes without a word, so the command refuses and exits with 4.
Nothing is sent when the keyboard focus is on a button, a link, a list item
or a page that is not editable: keys there act on that control, so the
command refuses and exits with 4. Where it cannot tell, it sends.
Press Escape to stop a send in progress: nothing more is typed, the command
says how much arrived and exits with 4. Escape belongs to the command only
while it types - before and after, the key is the application's.