Pages: [1] 2   Go Down
Author Topic: Leonardo: Modifier key for Print Screen button  (Read 2289 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello,

I am using Leonardo board for Keyboard and Mouse simulation. Counld you please tell me how can I simulate Print screen button from Leonardo. I checked with list of midifier keys. But I didnt find any key for Print screen.

Could you please tell me Key, Hexadecimal and Decimal value for Print screen key for Leonardo.

Regards,
Swapnil

Logged

Copenhagen / Denmark
Offline Offline
Edison Member
*
Karma: 6
Posts: 2360
Do it !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I don't think that is possible.  The print screen and the "windows" keys are special keys that do not behave like all other keys on a keyboard.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Thanks for the reply. Is there any other way to do the same using Leonardo?
Logged

Global Moderator
Offline Offline
Brattain Member
*****
Karma: 495
Posts: 19026
Lua rocks!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I would have thought that they would send some sort of code, I just don't know what it is.
Logged


Global Moderator
Offline Offline
Brattain Member
*****
Karma: 495
Posts: 19026
Lua rocks!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Example of where you might look:

http://www.quadibloc.com/comp/scan.htm
Logged


UK
Offline Offline
Shannon Member
****
Karma: 223
Posts: 12630
-
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I would have thought that they would send some sort of code, I just don't know what it is.

In Windows, the virtual key scancode for the Print key is 0x2A. (I have no idea how you'd make use of that within Arduino emulating an HID, but I suppose it's generating scancodes somehow.)
Logged

I only provide help via the forum - please do not contact me for private consultancy.

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Thanks a lot for reply.

Actually I want to use Prnt screen to take snapshot of application software after few actions done by Keyboard and mouse libraries. So after series of test operation, screenshot will be used for verification point. But while using Leonardo Keyboard libraries, I didnt find how to press and release Prit screen Key.

Could you please tell me how can I use Pring Screen scan code Ox2A (as mentioned above by PeterH) while using Leonardo Keyboard libraries?? How can I send parameter in Keyboard.press() and Keyboard.release() for Print screen button.

Sorry for late reply, I was on leave.
Logged

Global Moderator
Offline Offline
Brattain Member
*****
Karma: 495
Posts: 19026
Lua rocks!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I'm not sure it is 0x2A but this is the general idea for pressing and releasing:

Code:
                Keyboard.press (KEY_LEFT_ARROW);
                Keyboard.releaseAll();

I don't think the scan code will necessarily be the USB code. You could try 0x46 which I got from the page I linked above. But no guarantees.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi Nick, I tried with 0x46 by Keyboard.press(70) and Keyboard.releaseAll() but it doesnt work. Any other USB code for Print Screen button that would make it?
Is this limitation of Leonardo Keyboard libraries? Or can we create external libraries to do Print Screen press-release operation?
Logged

Global Moderator
Offline Offline
Brattain Member
*****
Karma: 495
Posts: 19026
Lua rocks!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Perhaps post your code?
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Here is my code:

Where I need to implement Print screen to validate the operation.

Code:
/*
 Code is to test one module of S/w application. Here if char '1' is received from Serial1 of Leonardo,
 then by using Keyboard library it will press Alt+f and then 'o' button to open the window.
 As window is open. Test need to validate the open window by taking screen shot of window.
 To take screen shot of window, print screen button need to press and release.
 */
void setup() { // initialize
  Serial1.begin(9600);
  Serial.begin(9600);
  while (! Serial1);
  while (! Serial);

  Mouse.begin(); 
  Keyboard.begin();
}

void loop() {
 
  if (Serial1.available() > 0) {
    char inChar = Serial1.read();
   
    switch (inChar) {   
        case '1':
        delay(1000);
        Keyboard.press(KEY_LEFT_ALT);
        delay(100);
        Keyboard.press('f');
        delay(100);
        Keyboard.releaseAll();
        delay(100);
        Keyboard.press('o');
        delay(100);
        Keyboard.releaseAll();
        delay(500);
        //Here I want to do validation for open window. I need to take screen shot of open window by KeyBoard library.
        //If print screen would be implemented then code would be as below:
       
//        Keyboard.press(KEY_PRNT_SCRN); //Yet Did not find modifier key for Print screen.
//        delay(100);
//        Keyboard.releaseAll();
//        //open microsoft paint to store screen shot
//        Keyboard.press(KEY_LEFT_GUI) //window key
//        Keyboard.press('r')
//        delay(100);
//        Keyboard.releaseAll();
//       
//        Keyboard.print("mspaint");
//        delay(100);
//        Keyboard.press(KEY_RETURN)
//        delay(100);
//        Keyboard.releaseAll();
//        //Then Paste the screen shot by Cntrl+V and save the image.
       
        break;
       
        default:
        Serial.print("Default Case");
       
       
    } //switch end

  } //if end

}//void loop End 
Logged

Global Moderator
Offline Offline
Brattain Member
*****
Karma: 495
Posts: 19026
Lua rocks!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
//        Keyboard.press(KEY_PRNT_SCRN); //Yet Did not find modifier key for Print screen.
//        delay(100);
//        Keyboard.releaseAll();


The code that actually implements KEY_PRNT_SCRN.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

"KEY_PRNT_SCRN" modifier key is not available for Keyboard.press(); function. Please check link: http://arduino.cc/en/Reference/KeyboardModifiers

I put line of code to define the purpose of print screen. If I verify code, it throws compile error as "error: 'KEY_PRNT_SCRN' was not declared in this scope"
Logged

Global Moderator
Offline Offline
Brattain Member
*****
Karma: 495
Posts: 19026
Lua rocks!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I'm still not seeing code, that compiles, that doesn't work.
Logged


Global Moderator
Offline Offline
Brattain Member
*****
Karma: 495
Posts: 19026
Lua rocks!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Look:

Read this before posting a programming question
Logged


Pages: [1] 2   Go Up
Jump to: