Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp21623971ybl; Mon, 6 Jan 2020 08:09:34 -0800 (PST) X-Google-Smtp-Source: APXvYqzO+FkSpij0upHccQMqhhq3PStMExS6JkzPtKIARVxXL2JiMsixFLYijCv4fanxWbNHWNmG X-Received: by 2002:a9d:21f5:: with SMTP id s108mr100161032otb.152.1578326973900; Mon, 06 Jan 2020 08:09:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578326973; cv=none; d=google.com; s=arc-20160816; b=BSLX0JUF//68aF7vkaN9+1FAYJLmZhM7Yt8Ia7N9upzjCSY/9WqbwD9AZ0ySFuuegz 3SfwG4pIoL4g37MEBcilUwtZ5xPhM5u9/8mfSzhCP/S5q7lkhrCSpTEGQ/MZps3ICgUS /6BsUawPJwyJNU+ItDWlGe7p/sf2akGMcYu4q2C2vsHS+QVOWFwY+LwgkJ6enJy2W4yF My8xh/ybS8CdLEk51sMQtFuTasoh/mbaISQSqdmIFiodlNX7DdNsn7jYZiSkrFvgw+13 4awRLVE7HhOoii4CzYPsuQokXqVns1YeM4hCaiCH4P6ggQdaczpog1l9khNF/TtcTm9Z 5VWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=fzmFOSTwYROu/1LSkJP0hkJnhzO/1T3w6q/Fv8DX39E=; b=sdt9MxmeaLDzltihlEXEHTEFSt9c4hMvOPkgR2bkk2C4xJBnfMhqrHmAS0OFv9Z95J vOY1fujCue/uSjSok8ontFHvyTz2RJrhi7VMwySrQpxpAtVaSyRwc0xeGFi8i79zqAvY zVqHg1Tts29hyvH11HkGn0VwT5ImHTOTe9rLXx8jdoMaqb9yyW8V0y1LLWN1aia7/ST4 8938Ahz6i0vDNtzWtQc9dTSxHrrbXL728//HSYfZvFTGsEROXGjCIy/dePilGL4aawBI zAKYCZhaA7NVerY1xD96Dzm16Mw5JMaUBeGhA1rXuIr7P9qxPcsKvQ7oB10bw8UMKuvO tInw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="y/9R1AYy"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t23si36034805otk.304.2020.01.06.08.09.20; Mon, 06 Jan 2020 08:09:33 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="y/9R1AYy"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727282AbgAFQIT (ORCPT + 99 others); Mon, 6 Jan 2020 11:08:19 -0500 Received: from mail.kernel.org ([198.145.29.99]:46912 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727266AbgAFQIR (ORCPT ); Mon, 6 Jan 2020 11:08:17 -0500 Received: from quaco.ghostprotocols.net (unknown [179.97.35.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id D35A920848; Mon, 6 Jan 2020 16:08:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578326896; bh=1dtFPI0xTgg3vRqQHwHkdJuFx/UPVAIvC5B1KR3o97A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=y/9R1AYy2rgn5V8hIch6Me6mM0JPEgjSirXp2bEp4DBPJi5YvrG2spzBoVBAgAgo6 aNPp//ZY6GgVd01Sx2o7PuC2NFrTf+o7YeWGBRWagiUIiZLq8Fp9TZqvCwJ9Yvjw+Y uyyh7QfxED1Wkk+IwYLc5B+AHZCG77gvNK2DZPgc= From: Arnaldo Carvalho de Melo To: Ingo Molnar , Thomas Gleixner Cc: Jiri Olsa , Namhyung Kim , Clark Williams , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Arnaldo Carvalho de Melo , Adrian Hunter , Andi Kleen , Jin Yao , Kan Liang , Linus Torvalds Subject: [PATCH 17/20] perf report/top: Allow pressing hotkeys in the options popup menu Date: Mon, 6 Jan 2020 13:07:02 -0300 Message-Id: <20200106160705.10899-18-acme@kernel.org> X-Mailer: git-send-email 2.21.1 In-Reply-To: <20200106160705.10899-1-acme@kernel.org> References: <20200106160705.10899-1-acme@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Arnaldo Carvalho de Melo When the users presses ENTER in the main 'perf report/top' screen a popup menu is presented, in it some hotkeys are suggested as alternatives to using the menu, or for additional features. At that point the user may try those hotkeys, so allow for that by recording the key used and exiting, the caller then can check for that possibility and process the hotkey. I.e. try pressing ENTER, and then 'k' to exit and zoom into the kernel map, using ESC then zooms out, etc. Reviewed-by: Jiri Olsa Cc: Adrian Hunter Cc: Andi Kleen Cc: Jin Yao Cc: Kan Liang Cc: Linus Torvalds Cc: Namhyung Kim Link: https://lkml.kernel.org/n/tip-ujfq3fw44kf6qrtfajl5dcsp@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/ui/browsers/hists.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c index c44b508f9e06..8776b1cb29b7 100644 --- a/tools/perf/ui/browsers/hists.c +++ b/tools/perf/ui/browsers/hists.c @@ -2995,12 +2995,13 @@ static int perf_evsel__hists_browse(struct evsel *evsel, int nr_events, while (1) { struct thread *thread = NULL; struct map *map = NULL; - int choice = 0; + int choice; int socked_id = -1; - nr_options = 0; - - key = hist_browser__run(browser, helpline, warn_lost_event, 0); + key = 0; // reset key +do_hotkey: // key came straight from options ui__popup_menu() + choice = nr_options = 0; + key = hist_browser__run(browser, helpline, warn_lost_event, key); if (browser->he_selection != NULL) { thread = hist_browser__selected_thread(browser); @@ -3279,10 +3280,13 @@ static int perf_evsel__hists_browse(struct evsel *evsel, int nr_events, do { struct popup_action *act; - choice = ui__popup_menu(nr_options, options, NULL); - if (choice == -1 || choice >= nr_options) + choice = ui__popup_menu(nr_options, options, &key); + if (choice == -1) break; + if (choice == nr_options) + goto do_hotkey; + act = &actions[choice]; key = act->fn(browser, act); } while (key == 1); -- 2.21.1