From patchwork Fri Mar 13 04:35:35 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Programmingkid X-Patchwork-Id: 449782 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3E9D21400DE for ; Fri, 13 Mar 2015 15:36:01 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="verification failed; unprotected key" header.d=gmail.com header.i=@gmail.com header.b=yrtBtFIt; dkim-adsp=none (unprotected policy); dkim-atps=neutral Received: from localhost ([::1]:35084 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YWHKI-0001Fi-GY for incoming@patchwork.ozlabs.org; Fri, 13 Mar 2015 00:35:58 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56986) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YWHK3-0000m8-QR for qemu-devel@nongnu.org; Fri, 13 Mar 2015 00:35:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YWHJy-0002rz-Kt for qemu-devel@nongnu.org; Fri, 13 Mar 2015 00:35:43 -0400 Received: from mail-qg0-x234.google.com ([2607:f8b0:400d:c04::234]:46454) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YWHJy-0002rj-Ff for qemu-devel@nongnu.org; Fri, 13 Mar 2015 00:35:38 -0400 Received: by qgfh3 with SMTP id h3so23358135qgf.13 for ; Thu, 12 Mar 2015 21:35:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:content-type:content-transfer-encoding:subject:date:message-id :cc:to:mime-version; bh=LB92VvLCqltCJF9Pu1qBmhCLxHAhOXXxzqUjvVZ08t0=; b=yrtBtFItgk0fEm/TDRanrve+hGVlDSILcb02p2hppVvbV3tIp6BZYIG198/rAPjh6n THxoi8UQ3mcTKHf6B3TGIMmIKvLBYHLINpWx3H3E9j50tRT1weurLUwpCFySlu/SJZ/w kvoVGTproNiNZ2PfJDCnX/49tQtN3x7RTWUlO8ojZOGtUVdxhOcnxNUoPcHdue88DkJB ckoOn7Vtjm6tUJrGLmAGfSeaUPwTCEI+ANfX5Q25OBTwBSDz2KLykhlmCDb5gHB735q5 y2Ua1CwhAu85EnDousXMf0zKsZe0gLb+4xE8ow2JT9rQ8dC/W1zxj52Xy2886HcqD44C PGDA== X-Received: by 10.55.42.137 with SMTP id q9mr78020127qkq.14.1426221338134; Thu, 12 Mar 2015 21:35:38 -0700 (PDT) Received: from [192.168.0.4] (d199-74-164-53.col.wideopenwest.com. [74.199.53.164]) by mx.google.com with ESMTPSA id e73sm690192qkh.19.2015.03.12.21.35.36 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 12 Mar 2015 21:35:37 -0700 (PDT) From: Programmingkid Date: Fri, 13 Mar 2015 00:35:35 -0400 Message-Id: <9D0D12D4-476B-4EF4-80EB-0A61F0BED115@gmail.com> To: Peter Maydell Mime-Version: 1.0 (Apple Message framework v1084) X-Mailer: Apple Mail (2.1084) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400d:c04::234 Cc: qemu-devel qemu-devel Subject: [Qemu-devel] [PATCH] ui/cocoa.m: Give laptop users ability to scroll in monitor X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Laptop users usually have keyboards that are missing the page up and page down keys. This means they cannot scroll in the monitor. This patch gives laptop users the ability to scroll in the monitor by having the user push the Control + Up/Down arrow keys to scroll one line at a time. Use ALT/Option in place of Control to be able to scroll at 10 lines at a time. Signed-off-by: John Arbuckle --- ui/cocoa.m | 82 ++++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 55 insertions(+), 27 deletions(-) diff --git a/ui/cocoa.m b/ui/cocoa.m index d37c29b..3ac847f 100644 --- a/ui/cocoa.m +++ b/ui/cocoa.m @@ -593,35 +593,63 @@ QemuCocoaView *cocoaView; // handlekeys for Monitor } else { int keysym = 0; - switch([event keyCode]) { - case 115: - keysym = QEMU_KEY_HOME; - break; - case 117: - keysym = QEMU_KEY_DELETE; - break; - case 119: - keysym = QEMU_KEY_END; - break; - case 123: - keysym = QEMU_KEY_LEFT; - break; - case 124: - keysym = QEMU_KEY_RIGHT; - break; - case 125: - keysym = QEMU_KEY_DOWN; - break; - case 126: - keysym = QEMU_KEY_UP; - break; - default: - { - NSString *ks = [event characters]; - if ([ks length] > 0) - keysym = [ks characterAtIndex:0]; + + /* + Holding down the up or down arrow key with the Control key scrolls the console one line. + Using the ALT/Option key with the up or down key scrolls the console 10 lines. + Had to do this because laptops don't have page up or page down keys. + */ + + // if the CONTROL key is held down + if([event modifierFlags] & NSControlKeyMask) { + if([event keyCode] == 126) { // up arrow key + keysym = QEMU_KEY_CTRL_UP; + } else if([event keyCode] == 125) { // down arrow key + keysym = QEMU_KEY_CTRL_DOWN; + } + } + + // if the ALT/OPTION key is held down + else if ([event modifierFlags] & NSAlternateKeyMask) { + if ([event keyCode] == 126) { // up arrow key + keysym = QEMU_KEY_CTRL_PAGEUP; + } else if ([event keyCode] == 125) { // down arrow key + keysym = QEMU_KEY_CTRL_PAGEDOWN; } } + + else { + switch([event keyCode]) { + case 115: + keysym = QEMU_KEY_HOME; + break; + case 117: + keysym = QEMU_KEY_DELETE; + break; + case 119: + keysym = QEMU_KEY_END; + break; + case 123: + keysym = QEMU_KEY_LEFT; + break; + case 124: + keysym = QEMU_KEY_RIGHT; + break; + case 125: + keysym = QEMU_KEY_DOWN; + break; + case 126: + keysym = QEMU_KEY_UP; + break; + default: + { + NSString *ks = [event characters]; + if ([ks length] > 0) + keysym = [ks characterAtIndex:0]; + } + } + } + if (keysym) kbd_put_keysym(keysym); }