1 (изменено: Mikki, 2010-11-18 17:43:44)

Тема: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Доброго дня форумчанам.

Стал я недавно обладателем "мегоацкойкрутостильной" клавиатурки. Воттакой (привожу, ибо думается что дело в железе)

Есть в этой клавиатуре такие клавиши которые регулируют громкость. А в моем скрипте, запускающимся с загрузкой компа и настаивающим мои хоткеи и скрипты, есть такая метка:

Show_Sound: ; тултип к Регулировке громкости 
  Sleep, 200
  SoundGet, CurSound
  CurSound:=Round(CurSound)
  ToolTip, Громкость: %CurSound%
  SetTimer, RemoveToolTip, -1000
return

Чтобы соединить приятное с полезным я сделал следующие изменения: чтобы при изменении громкости клавишами появлялся тултип сообщающий о текущей громкости)

;MediaVolume keys ,... to show tooltip
~sc130:: GoSub, Show_Sound ;увеличение громкости
~sc12e:: GoSub, Show_Sound ;уменьшение громкости

Show_Sound: ; тултип к Регулировке громкости 
  Sleep, 200
  SoundGet, CurSound
  CurSound:=Round(CurSound)
  ToolTip, Громкость: %CurSound%
  SetTimer, RemoveToolTip, -1000
return

Можно и без GoSub, но я их добавил позже, чтобы отследить исполнение скрипта.

В чем же проблемма? А в том, что при нажатии на клавишу Ctrl (который в этой клавиатуре только левый) я получаю исполнение строки

~sc12e:: GoSub, Show_Sound ;уменьшение громкости

выдержка из странички Key history and script info:

A2  01D         d    1.11    Ctrl               
A2  01D         u    0.17    Ctrl               
04  000    a    u    0.00    MButton            
A2  01D    a    u    0.00    Ctrl               
A2  01D    a    d    0.00    Ctrl               
43  02E    h    d    0.00    C                  
43  02E    a    u    0.00    C                  
A2  01D    a    u    0.00    Ctrl

и соответственно показывается тултип сообщающий мне текущую громкость в системе. Но это меня не сильно донимало. А вот после нажатия в  тоталовском Lister-e я понял, что тут основательно что-то не так. Ибо понял, что система не только выдает тултип, но еще и копирует выделенный фрагмент текста, если таковой существует.

Вот, собственно, и прошу помочь разобраться - почему при нажатии на Ctrl срабатывает приведенная выше последовательность нажатий.

--
если убрать эти хоткеи из скрипта и опять нажать клавишу Ctrl то видим следующее:

A2  01D         d    0.64    Ctrl               
A2  01D         u    0.20    Ctrl               
04  000    a    u    0.00    MButton            
A2  01D    a    u    0.00    Ctrl               
A2  01D    a    d    0.00    Ctrl               
43  02E    #    d    0.00    C                  
43  02E    a    u    0.00    C                  
A2  01D    a    u    0.00    Ctrl

т.е. опять система пытается скопировать выделенный фрагмент (если такой есть). Это всетаки железо?

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

2 (изменено: teadrinker, 2010-11-16 18:44:49)

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Скорее всего, есть ошибка в какой-то другой части скрипта.

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

3

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

teadrinker пишет:

Скорее всего, есть ошибка в какой-то другой части скрипта.

вот для того что,ы отследить эту оши,ку я и написал GoSub. Оказывается исполнеие идет с хоткея sc12e. На просто Ctrl нет ни каких скриптов.

Как поискать "хомут"? Если можно - алгоритм действий. Спасибо.

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

4

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Может, попробовать с другой клавиатурой?

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

5

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Кроме того, можно попробовать заменить sc на соответствующие vk.

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

6

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Мммм, не подскажите, надо так:

~vkAFsc130:: GoSub, Show_Sound

или так: ?

~vkAF:: GoSub, Show_Sound

в общем, как бы то ни было - тултипы перестали показываться (громкость понятное дело - меняется) и на Ctrl реагирует по прежнему.

Клаву пока не имею возможность поменять. Попожжа.

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

7

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Правильно так:

~vkAF::

GoSub не нужен, он ничего не даёт.

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

8

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Завершите все скрипты ahk и запустите такой код

#Persistent
#InstallKeybdHook

Понажимайте ctrl, если результат тот же, то скорее всего такая клавиатура или стоит какая-то сторонняя программа.

Из первого поста:

A2  01D         d    0.64    Ctrl               
A2  01D         u    0.20    Ctrl               
04  000    a    u    0.00    MButton            
A2  01D    a    u    0.00    Ctrl               
A2  01D    a    d    0.00    Ctrl               
43  02E    #    d    0.00    C                  
43  02E    a    u    0.00    C                  
A2  01D    a    u    0.00    Ctrl

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

9 (изменено: Mikki, 2010-11-17 13:22:23)

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

После выгрузки ПунтоСвитчера проблемма с Ctrl пропала. Причина найдена. ВСем Спасибо.

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

10

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Однако... не все так прозрачно в королевстве Датском.

Задумалс я над раскручиванием ситуации описанной выше, и сформировал наконец в голове еще один вопрос - почему при нажатии Ctrl+C срабатывает строка ~sc12e?

Думал, что уж тут то точно клава выпендривается. Но. Сейчас я дома. Клава - обычная. Решил провести эксперимент: вписал в брате близнеце скрипта с рабочей машины ту же строчку ~sc12e и, о чудо - при нажатии Ctrl+C у меня стал появляться тултип с инфой о текущей громкости.

Хммм. После двух сегодняшних обнаруженных "хомутов" не удивлюсь если и тут будет что-то подобное, но пока вариантов не вижу.

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

11

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

#5

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

12

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Ах,да, я забыл об этом упомянуть - на работе когда я заменил на VK - перестало реагировать нужный хоткей. Т.е. даже при регулировке громкости не отображало тултип.

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

13

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Так может vk были неверные?

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

14

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Mikki пишет:

Задумалс я над раскручиванием ситуации описанной выше, и сформировал наконец в голове еще один вопрос - почему при нажатии Ctrl+C срабатывает строка ~sc12e?

У меня лично (на ХР) не срабатывает. Вообще, Ваши вопросы несколько беспредметны. Опубликуйте код, который демонстрирует проблему. Т.е. такой, который один, запущенный сам по себе, порождает эту проблему. Если сам по себе не порождает, значит, причина в остальном скрипте, смотрите там. Или выкладывайте скрипт целиком, чтобы кто-то другой посмотрел. Хотя, конечно, чем больше код, тем меньше будет желание в нём копаться. Так что желательно выделить проблему во что-то небольшое.

15

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Чуть чуть покопался. Уменьшил глючное место до следуещего кода:

#Singleinstance force

#IfWinActive Program1  ;WinTitle абсолютно левой, не существующей программы
;Ctrl+X
^sc02d::  msgbox, lalala
;Ctrl+C
^sc02e::  msgbox, lalala
;Ctrl+V
^sc02f::  msgbox, lalala
;Ctrl+B
^sc030::  msgbox, lalala
#IfWinActive  ;блок вышеназначенных клавишь не должен ни когда исполняться

;блок хоткеев назначенных ниже соответствует другим клавишам
~sc12d::  
  ToolTip, Вы нажали Ctrl+X
  SetTimer, RemoveToolTip, -1000
return
~sc12e::
  ToolTip, Вы нажали Ctrl+C
  SetTimer, RemoveToolTip, -1000
return
~sc12f::
  ToolTip, Вы нажали Ctrl+V
  SetTimer, RemoveToolTip, -1000
return
~sc130::
  ToolTip, Вы нажали Ctrl+B
  SetTimer, RemoveToolTip, -1000
return


RemoveToolTip:                           ;подпрограмма убирания подсказки
ToolTip
return

попробуте исполнить у себя этот скрипт. У меня - при нажатии Ctrl+C выполняется хоткей ~sc12e::, Ctrl+X - ~sc12d:: итд.

Зарэмте любой хоткей между директивами #IfWin и перестанут выполняться соответствующие им хоткеи за пределами блока директив.

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

16

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Вот так у меня глюк исчез. Вообще, по моему опыту, лучше использовать VK, меньше вероятность глюков. И только при необходимости использовать сканкоды.

#Singleinstance force

#IfWinActive Program1  ;WinTitle абсолютно левой, не существующей программы
;Ctrl+X
^vk58::  msgbox, lalala
;Ctrl+C
^vk43::  msgbox, lalala
;Ctrl+V
^vk56::  msgbox, lalala
;Ctrl+B
^vk42::  msgbox, lalala
#IfWinActive  ;блок вышеназначенных клавишь не должен ни когда исполняться

;блок хоткеев назначенных ниже соответствует другим клавишам
~sc12d::  
  ToolTip, Вы нажали Ctrl+X
  SetTimer, RemoveToolTip, -1000
return
~sc12e::
  ToolTip, Вы нажали Ctrl+C
  SetTimer, RemoveToolTip, -1000
return
~sc12f::
  ToolTip, Вы нажали Ctrl+V
  SetTimer, RemoveToolTip, -1000
return
~sc130::
  ToolTip, Вы нажали Ctrl+B
  SetTimer, RemoveToolTip, -1000
return


RemoveToolTip:                           ;подпрограмма убирания подсказки
ToolTip
return

17

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Да, с VK в этом маленьком скриптике работает. А когда я переношу (копипастом) те же VK в большой - они перестают.

Т.к. я не смог пока выделить ошибку в маленький код, то и раздувать тут пока ни чего не буду. Поотрезаю все лишнее тогда и вернусь.

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

18 (изменено: Mikki, 2010-11-18 17:06:26)

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Собственно вот. Опять все дело в сканкодах оказалось. Если все заменяю на VK то все работает. Ниже привожу урезанный глючный код. У меня глючность в том, что простые нажатия на клавиши громкости не показывают тултипы. Т.е. последние два хоткея не срабатывают. Если все хоткеи написать в сканкодах или все в VK то скрипт работает. Собственно перевел все в VK и "глюки" ушли. Всем спасибо.

#Singleinstance force

;Shift+VolumeDown
+sc12e::
  ToolTip, Вы нажали Шифт+----
  SetTimer, RemoveToolTip, -1000
    return
;Shift+VolumeUp
+sc130::
  ToolTip, Вы нажали Шифт++++
  SetTimer, RemoveToolTip, -1000
    return

;VolumeDown
~vkAE::
  ToolTip, Вы нажали ----
  SetTimer, RemoveToolTip, -1000
return
;VolumeUp
~vkAF::
  ToolTip, Вы нажали +++++
  SetTimer, RemoveToolTip, -1000
return

;
RemoveToolTip:                           ;подпрограмма убирания подсказки
ToolTip
return

--
PS: может название темы изменить на "SC vs VK" или "глюки с sc"?

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

19

Re: AHK: Хоткеи на урезанной клавиатуре (глюки со сканкодами SC)

Mikki пишет:

PS: может название темы изменить на "SC vs VK" или "глюки с sc"?

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