Показать сообщение отдельно
Старый 11.04.2016, 00:04   #636
olllegan
Пользователь
 
Регистрация: 24.01.2012
Возраст: 51
Город: Киев
Регион: Украина
Машина: Renault Megane 2
Сообщений: 31
olllegan is on a distinguished road
По умолчанию

Цитата:
Сообщение от olllegan Посмотреть сообщение
Подскажите как добавить сочетания кнопок. Использую Arduino Leonardo. Взял скетч из поста #307. Все прекрасно работает.
Пытаюсь добавить ещё одно сочетание (нужно CTR+Z и CTRL+B) на основе сочетания Alt+Tab не получается.
Ещё раз прошу помощи в правке скетча.
Вот скетч
PHP код:
//****************** Здесь необходимо указать свои значения ***************  

int analogPin=0// пин для подключения кнопок, по умолчанию A0  

int release_button 0// значение при отпущенных кнопках  
int button_release_range 50// диапазон значения + - при отпущенных кнопках  
int button_range 20// диапазон значения нажатых кнопок + -  
int time_holding 300// время для удержания кнопок в миллисекундах  
int time_tinkling 30// время исключающее дребезг контактов в миллисекундах 
int ctrl_z 740// значение кнопки которая будет работать как CTRL + Z 
int alt_tab 854// значение кнопки которая будет работать как Alt + Tab  
int next 409// значение кнопки которая будет работать как Next при коротком нажатии и Fast Forward при удержании  
int previous 667// значение кнопки которая будет работать как Previous при коротком нажатии и Rewind при удержании  
int play_pause 555// значение кнопки которая будет работать как Play/Pause при коротком нажатии и Mute при удержании  

//**************************************************************************  

int data;   
unsigned long flag 0;   
unsigned long eventTime 0;   
unsigned long pauseMillis 0;  

void setup()   
{  
analogReference(DEFAULT); // подключение внутреннего напряжение AVCC к выводу AREF (опорное напряжение)  
Keyboard.begin();   
}   

void loop()   
{   
data=analogRead(analogPin);   
if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == 0)   
{   
eventTime=millis();   
}   

//********************** Ctrl+Z ************************************    
if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-&& data >= ctrl_z button_range && data <= ctrl_z button_range)   
{    
flag 1;   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == && pauseMillis == 0)   
{   
Keyboard.press(KEY_LEFT_CTRL);   
Keyboard.press('z');   
Keyboard.release('z');   
Keyboard.press('z');   
Keyboard.release('z');   
flag 0;   
pauseMillis millis();   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == && pauseMillis != 0)   
{   
Keyboard.press('z');   
Keyboard.release('z');   
flag 0;   
pauseMillis millis();   
}   

if(
pauseMillis && millis()-pauseMillis >= 800 && data>=release_button button_release_range && data<=release_button button_release_range)   
{   
flag 0;   
pauseMillis 0;   
Keyboard.releaseAll();   
}   

if(
millis()-eventTime>time_holding && data >= ctrl_z button_range && data <= ctrl_z button_range && flag == 1)   
{    
flag 0;   
}   

  
//********************** AltTab + Ещё что то ************************************    

if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-&& data >= alt_tab button_range && data <= alt_tab button_range)   
{    
flag 1;   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == && pauseMillis == 0)   
{   
Keyboard.press(KEY_LEFT_ALT);   
Keyboard.press(KEY_TAB);   
Keyboard.release(KEY_TAB);   
Keyboard.press(KEY_TAB);   
Keyboard.release(KEY_TAB);   
flag 0;   
pauseMillis millis();   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == && pauseMillis != 0)   
{   
Keyboard.press(KEY_TAB);   
Keyboard.release(KEY_TAB);   
flag 0;   
pauseMillis millis();   
}   

if(
pauseMillis && millis()-pauseMillis >= 800 && data>=release_button button_release_range && data<=release_button button_release_range)   
{   
flag 0;   
pauseMillis 0;   
Keyboard.releaseAll();   
}   

if(
millis()-eventTime>time_holding && data >= alt_tab button_range && data <= alt_tab button_range && flag == 1)   
{    
flag 0;   
}   
//********************** Next и Fast Forward ************************************    

if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-&& data >= next button_range && data <= next button_range)   
{    
flag 2;   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == 2)   
{   
Remote.next();   
flag 0;   
delay(10);   
Remote.clear();   
}   

if(
millis()-eventTime>time_holding && data >= next button_range && data <= next button_range && flag == || data >= next button_range && data <= next button_range && flag == 3)   
{    
Remote.forward();   
flag 3;   
Remote.clear();   
delay(100);   
}   
//********************** Previous и Rewind ************************************    

if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-&& data >= previous button_range && data <= previous button_range)   
{    
flag 4;   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == 4)   
{   
Remote.previous();   
flag 0;   
delay(10);   
Remote.clear();   
}   

if(
millis()-eventTime>time_holding && data >= previous button_range && data <= previous button_range && flag == || data >= previous button_range && data <= previous button_range && flag == 3)   
{    
Remote.rewind();  
flag 3;   
Remote.clear();   
delay(100);   
}   

//********************** Play/pause + Mute ************************************    

if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-&& data >= play_pause button_range && data <= play_pause button_range)   
{    
flag 7;   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == 7)   
{   
Remote.play_pause();    
flag 0;   
delay(10);   
Remote.clear();   
}   

if(
millis()-eventTime>time_holding && data >= play_pause button_range && data <= play_pause button_range && flag == 7)   
{    
Remote.mute();  
flag 0;  
delay(10);  
Remote.clear();   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == || data>=release_button button_release_range && data<=release_button button_release_range && flag == || data>=release_button button_release_range && data<=release_button button_release_range && flag == 6)   
{   
flag 0;   
}    

Без раздела ******Ctrl+Z****** всё работает. Как только добавляю раздел ******Ctrl+Z****** кнопка Alt+Tab и кнопка на которой находится Ctrl+Z выдают одну и туже команду которая соответствует команде Ctrl+Z. В чём подвох?

Последний раз редактировалось olllegan; 11.04.2016 в 01:23.
olllegan вне форума   Ответить с цитированием