1 (изменено: wisgest, 2013-06-09 22:10:28)

Тема: AHK: Клавиши со стрелками на нетбуке

Столкнулся с тем, что в нетбуке клавиши Left, Right, Up, Down совмещены с Home, End, PgUp, PgDn, причём, вторые задействуются только с модификатором Shift (при этом можно использовать дополнительно Ctrl), а первые - только без него, т.е. нельзя, например, выделить с клавиатуры один символ влево или вправо и, наоборот, нельзя без сопутствующего выделения переместится в начало или конец строки или листать текст.
В Internet нашёл, что для переключения на Home, End, PgUp, PgDn можно использовать Fn+NumLk, но это не сработало, да, если бы и работало, то было бы неудобно. Пока в качестве решения написал простейший AHK-сценарий:

+ открыть спойлер
; Сценарий AutoHotkey
; Разделение/переназначение совмещённых клавиш управления курсором для нетбука
; Позволяет использовать клавиши Left, Right, Up, Down с модификатором Shift,
;                      а клавиши Home, End, PgUp, PgDn - без него.
; (в разработке - возможны изменения!)

; Правый Alt - "длинные" клавиши (только без модификаторов):
>!Left::SendInput {Home}
>!Right::SendInput {End}
>!Up::SendInput {PgUp}
>!Down::SendInput {PgDn}

; Левый Shift - задействуются "короткие" клавиши:
<+Home::Left
<+End::Right
<+PgUp::Up
<+PgDn::Down

; Правый Ctrl - задействуются "длинные" клавиши:
>^Left::Home
>^Right::End
>^Up::PgUp
>^Down::PgDn

Примеры:
Left/Home -- Left (без изменения),
RAlt+Left/Home -- Home (возможно, было бы удобнее LAlt, но, поскольку, остальные переключатели на длинные клавиши справа, пока сделал так),
LSift+Left/Home -- Shift+Left,
RShift+Left/Home -- Shift+Home (без изменения),
LShift+(R/L)Ctrl+Left/Home -- Shift+Ctrl+Left,
LCtrl+Left/Home -- Ctrl+Left (без изменения),
RCtrl+Left/Home -- Ctrl+Home,
RShift+(R/L)Ctrl+Left/Home -- Shift+Ctrl+Home (без изменения).

Кто-либо сталкивался с подобным затруднением и его решениями?
Существует ли, всё-таки, встроенное решение?
Любые другие?

Также вопрос по AHK: можно ли было написать кусок

>!Left::SendInput {Home}
>!Right::SendInput {End}
>!Up::SendInput {PgUp}
>!Down::SendInput {PgDn}

используя лишь переназначение клавиш без Send (у меня не получилось)?
Ещё вопрос по AHK: хотелось бы для переключения использовать клавишу Fn, возможно ли определять её нажатие?

2

Re: AHK: Клавиши со стрелками на нетбуке

wisgest пишет:

Также вопрос по AHK: можно ли было написать кусок ... используя лишь переназначение клавиш без Send (у меня не получилось)?

#if GetKeyState("RAlt", "P")
Left::Home
Right::End
Up::PgUp
Down::PgDn
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: wisgest, 2013-06-13 13:01:17)

Re: AHK: Клавиши со стрелками на нетбуке

Нашёл изображение такой клавиатуры.
Вопросы остаются в силе:

Кто-либо сталкивался с подобным затруднением и его решениями?
Существует ли, всё-таки, встроенное решение?
Любые другие?

Ещё вопрос по AHK: хотелось бы для переключения использовать клавишу Fn, возможно ли определять её нажатие?

__________

teadrinker, спасибо, но не сработало, возможно, потому что сам модификатор Alt не отбрасывается?

Впрочем, скрипт я переписал уже дважды:
первый раз, заметив, что не предусмотрено нажатие "длинных" клавиш с единственным модификатором Alt (например, Alt+Home - открытие домашней страницы веб-обозревателя), добавил ещё 4 строчки,
а затем, поняв, что использование Alt связано с некоторыми неудобствами (закрываются выпадающие списки; если нажать Alt и передумать жать клавишу со стрелкой - останешься в меню приложения...) переложил на RCtrl переключение на длинные клавиши (и оставил на RShift):

; Сценарий AutoHotkey
; Разделение/переназначение совмещённых клавиш управления курсором для нетбука
; Позволяет использовать клавиши Left, Right, Up, Down с модификатором Shift,
;                      а клавиши Home, End, PgUp, PgDn - без него.
; (в разработке - возможны изменения!)

SendMode Input

; RCtrl - "длинные" клавиши (RCtrl+LCtrl - Ctrl+"длинные" клавиши):
*>^Left::Send {Blind}{RCtrl Up}{Home}{RCtrl Down}
*>^Right::Send {Blind}{RCtrl Up}{End}{RCtrl Down}
*>^Up::Send {Blind}{RCtrl Up}{PgUp}{RCtrl Down}
*>^Down::Send {Blind}{RCtrl Up}{PgDn}{RCtrl Down}

; LShift - Shift+"короткие" клавиши
<+Home::Left
<+End::Right
<+PgUp::Up
<+PgDn::Down
+ Сочетанния с модификаторами на примере клавиши Left/Home (слева - ответ, справа решение):

Left - без модификаторов,
Home = RCtrl+клавиша,
Ctrl+Left = LCtrl+клавиша,
Ctrl+Home = LCtrl+RCtrl+клавиша,
Shift+Left = LSift+клавиша,
Shift+Home = RShift+клавиша,
Ctrl+Shift+Left = LShift+(L/R)Ctrl+клавиша,
Ctrl+Shift+Home = RShift+(L/R)Ctrl+клавиша;
в любое сочетание может входить любой Alt, например,
Alt+Home = (R/L)Alt+RCtrl+клавиша...

Есть ли замечания или советы по скрипту и выбору клавиш?

4

Re: AHK: Клавиши со стрелками на нетбуке

wisgest пишет:

Ещё вопрос по AHK: хотелось бы для переключения использовать клавишу Fn, возможно ли определять её нажатие?

Если клавиша определяется, её нажатия должны быть видны в KeyHistory в окне скрипта (открывается через иконку).

5

Re: AHK: Клавиши со стрелками на нетбуке

YMP пишет:

Если клавиша определяется, её нажатия должны быть видны в KeyHistory в окне скрипта (открывается через иконку).

К сожалению, не видна.
__________

Хотел, ради интереса попробовать ещё вариант переключения - скорее, менее удобный, но теоретически более правильный: левый Shift - короткие клавиши с Shift'ом, правый - длинные клавиши, оба Shift'а - длинные с Shift'ом. Но End ни в какую не захотела работать с двумя Shift'ами - как оказалось, она в таком случае просто не определяется...

6

Re: AHK: Клавиши со стрелками на нетбуке

А почему бы не перенести тему в AHK раздел?..Вроде по смыслу должно быть там.

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

7 (изменено: wisgest, 2013-06-13 12:59:53)

Re: AHK: Клавиши со стрелками на нетбуке

Mikki пишет:

А почему бы не перенести тему в AHK раздел?..Вроде по смыслу должно быть там.

Потому, что интересуют решения не только при помощи AHK.
В крайнем случае, можно было бы перенести в раздел "Прочие скриптовые технологии" с префиксом ANY/AHK, но и это не совсем то, т.к.  решение, скорее всего не скриптовое.

До того, как у меня появился б/у нетбук, я об этом вопросе как-то не думал, но уже после моего последнего  сообщения в этой теме у нетбуков (2 шт.), которые мне попались на глаза было такое же расположение клавиш, но переключение производилось с помощью клавиши Fn, что, впрочем, сразу было видно, т.к. соответствующие надписи на кнопках сделаны тем же цветом (голубым), что и на Fn. У меня же клавиши PgUp, PgDn в сочетании с Fn должны управлять громкостью, что видно по снимку, ссылку на который я приводил ранее.

На данный момент, мне представлеются два решения: при помощи программы позволяющей перепрограммировать Fn
или замена драйвера клавиатуры, т.к. сейчас стоит "Стандартная 101/102 клавиши или клавиатура PS/2 Microsoft Natural" (файлы C:\WINDOWS\system32\DRIVERS\i8042prt.sys и C:\WINDOWS\system32\DRIVERS\kbdclass.sys).
Может быть дадите совет в этих направлениях? (Любые другие тоже приветствуются.)
(Ну, а так пока можно жить с приведённым решением на AHK.)

8 (изменено: wisgest, 2014-01-08 21:17:25)

Re: AHK: Клавиши со стрелками на нетбуке

Mikki пишет:

А почему бы не перенести тему в AHK раздел?..Вроде по смыслу должно быть там.

Пожалуй, всё-таки, можно, поскольку других решений пока не предвижу и в ближайшем собираюсь поговорить именно о решении при помощи AHK (но, по-прежнему, буду совсем не против предложений других путей).


Скрипт переделал опять. В первую очередь я пришёл к более последовательному подходу: клавиши со стрелками должны восприниматься как длинные или короткие только в зависимоcти от того, нажат или нет среди модификаторов правый Ctrl. (Таким образом, основная задача, как мне кажется, такая же как и в теме «AHK: Проблемы с отключением Shift», только вместо Shift — RCtrl.)

Используемый в настоящее время код:

; Сценарий AutoHotkey
; Разделение/переназначение совмещённых клавиш управления курсором для нетбука
; Позволяет использовать клавиши Left, Right, Up, Down с модификатором Shift,
;                      а клавиши Home, End, PgUp, PgDn - без него.

; Включение "длинных" клавиш - RCtrl.
; Последнее изменение: 12.09.2013
; [wisgest]

#NoEnv
#KeyHistory 0
ListLines Off
    Menu Tray, Icon, C:\WINDOWS\Cursors\move_rm.cur
SetBatchLines -1

SendMode Input

; RCtrl - "длинные" клавиши (LCtrl+RCtrl - "длинные" клавиши с Ctrl):

*>^Left::RCtrlOff("Home")
*>^Right::RCtrlOff("End")
*>^Up::RCtrlOff("PgUp")
*>^Down::RCtrlOff("PgDn")

*>^+Home::RCtrlOff("Home")
*>^+End::RCtrlOff("End")
*>^+PgUp::RCtrlOff("PgUp")
*>^+PgDn::RCtrlOff("PgDn")

RCtrlOff(key) {
    Send {Blind}{RCtrl Up}{%key%}{RCtrl Down}
    if (!GetKeyState("RCtrl", "P"))
        Send {RCtrl Up}
}


; Shift - Shift+"короткие" клавиши:

+Home::Left
+End::Right
+PgUp::Up
+PgDn::Down

При его написании у меня возникали вопросы, но их ещё надо постараться сформулировать (надеюсь, соберусь с силами, тем более, что задача, на мой взгляд, является образцовой для базового AHK), поэтому пока выкладываю так, но буду рад замечаниям, предложениям по улучшению или встречным вопросам.

9

Re: AHK: Клавиши со стрелками на нетбуке

Перенёс.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder