Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Keyboard LED Control (https://javascript.ru/forum/misc/17986-keyboard-led-control.html)

ave 11.06.2011 16:25

Keyboard LED Control
 
"Keyboard LED Control"

На Javascript можно изменять состояние светодиодов клавиатуры без нажатия клавиш?
Если да, то подскажите, пожалуйста, скрипт по-проще.

Все, что я смог найти на эту тему:

1. "Скажи Javascript, нажат ли Caps Lock?"
http://www.tigir.com/capslockdetect.htm

2. "Handling Keyboard Shortcuts in JavaScript"
http://www.openjs.com/scripts/events...cuts/index.php

3. "Keyboard LED Control V1.09"
http://www.fadsoft.net/LEDControl.htm

Kolyaj 11.06.2011 16:47

Нет.

ave 11.06.2011 17:40

Цитата:

Сообщение от Kolyaj (Сообщение 108239)
Нет.

Спасибо за ваш ответ.
Если я не ошибаюсь, пример из 3-й ссылки сделан на Delphi.
Почему на Delphi можно, а на Javascript нет? В чем выражается ограничение?

Kolyaj 11.06.2011 17:48

В том, что JavaScript работает в браузере. Вы же не хотите, чтобы после посещения какого-нибудь сайта у вас все лампочки на клавиатуре замигали?

ave 11.06.2011 18:02

Все мне не надо, мне одной достаточно. Но удаленно через инет - да, хочу. Не совсем то, что вы описали, но что-то подобное. И мне это не для развлечения надо. Как браузер это ограничивает?
Javascript может передать управление чему-то другому?

По теме Keyboard LED еще нашел:

"Управление клавишами NumLock, CapsLock и ScrollLock"
http://www.manhunter.ru/assembler/183_upravlenie_klavishami_numlock_capslock_i_scrol llock.html

Пример из Delphi как менять LED:
http://delphi-faq.zoxt.net/282.htm

Цитата:

VAR
KS: TKeyboardState;
begin GetKeyboardState(KS);
KS[020] := KS[020] XOR 1; //Caps Lock
KS[144] := KS[144] XOR 1; //Num Lock
KS[145] := KS[145] XOR 1; //Scroll Lock
SetKeyboardState(KS);
end;
Может, на JavaScript кто-то знает, как сделать что-то подобное. Или как обойти ограничение браузера.

monolithed 11.06.2011 20:30

Цитата:

Сообщение от ave
Может, на JavaScript кто-то знает, как сделать что-то подобное.

вам же сказали, что нет
Цитата:

Сообщение от ave
Или как обойти ограничение браузера.

для IE через COM-объекты возможно.
Цитата:

Сообщение от ave
Пример из Delphi как менять LED:

JavaScript, изначально не создавался для таких задач. Поэтому проанализируете внимательно все ответы

ave 11.06.2011 21:08

Я видел ответ "нет" - не слепой же. Но проблему решить надо. И она будет решена (через Javascript или через что-то другое). Иногда одни програмисты делают то, на что не способны другие. Это я не в обиду комуто пишу. Просто бывает.

Цитата:

Сообщение от monolithed (Сообщение 108255)
для IE через COM-объекты возможно.

Об этом по-подробней можете рассказать?

Если не через Javascript, то может через PHP можно как-то реализовать (вызывать) функцию MSDN "keybd_event"?

MSDN "keybd_event Function":
http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx
http://vsokovikov.narod.ru/New_MSDN_...eybd_event.htm

monolithed 11.06.2011 22:27

Цитата:

Сообщение от ave
Иногда одни програмисты делают то, на что не способны другие.

На это не способны ни JavaScript ни ActionScript и тем более не PHP. Очень сильно сомневаюсь, что даже Java позволит вылезти из своей "песочницы".
Цитата:

Сообщение от ave
Но проблему решить надо.

Если договоритесь с разработчиками браузеров, то конечно
Цитата:

Сообщение от ave
Об этом по-подробней можете рассказать?

для этого нужно найти VBScript программиста, который и расскажет...
Цитата:

Сообщение от ave
Если не через Javascript, то может через PHP

Нет

ave 12.06.2011 00:10

Цитата:

Сообщение от monolithed (Сообщение 108267)
Очень сильно сомневаюсь, что даже Java позволит вылезти из своей "песочницы".

Оказывается позволяет!

Цитата:

Сообщение от monolithed (Сообщение 108267)
для этого нужно найти VBScript программиста, который и расскажет...

Нашел на этом же форуме сообщение от Gvozd:
http://javascript.ru/forum/misc/3235...brauzerom.html

Проверил - работает! Лед тронулся... ) Дальше дело техники.
А скрипт мне нужен для удаленного програмирования моей HID клавиатуты.

P.S.
Надо же, целый день во всем нете искал и все равно, то что мне нужно было, здесь нашел. )

Gvozd 12.06.2011 00:21

ave,
может быть вы не обратили внимание, но там указано решение под WSH, а не под браузер.

в идеальном случае, вы сможете его запустить ТОЛЬКО в IE, и только если пользователь сознательно разрешит браузеру выполнять потенциально опасный код с вашего сайта.

То есть обычный пользователь(даже сидящий под IE, хотя таких далеко не 100%) не сможет воспользоваться вашим решением, так как либо не сумеет настроить нужным образом браузер, либо не станет, потому что это опасная настройка, и чтобы ее включить, нужно быть сумасшедшим.

Но если вы хотите полюбоваться в одиночку, либо с самыми близкими друзьями, своим творением, то почему бы и нет)

ave 12.06.2011 00:38

Gvozd, я это заметил. Это будет дополнительная (не для мас) функция для обновления прошивки (без драйверов). Кому надо, тот включит и выключит. А вам спасибо!

Возможно, будет и решение, как это сделать под любым браузером.

monolithed 12.06.2011 13:34

Цитата:

Сообщение от ave
Оказывается позволяет!

ну так если вы нашли костыль, который позволяет J2SE вылезти из песочницы, то код для реализации (вопрос реализации Applets или Java Web Start за вами) такой:

package org.kodejava.example.awt;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

public class CreatingKeyboardEvent {
    public static void main(String[] args) {
        try {
            Robot robot = new Robot();
            robot.keyPress(KeyEvent.VK_SCROLL_LOCK);
            robot.keyPress(KeyEvent.VK_CAPS_LOCK);
        } 
        catch (AWTException event) {
            event.printStackTrace();
        }
    }
}


В любом случае:
Цитата:

Сообщение от Gvozd
обычный пользователь не сможет воспользоваться вашим решением, так как либо не сумеет настроить нужным образом браузер, либо не станет, потому что это опасная настройка, и чтобы ее включить, нужно быть сумасшедшим.

+ должна быть запущена JVM и с требуемой JRE.

ave 12.06.2011 23:00

Спасибо.


Часовой пояс GMT +3, время: 00:34.