X-Recipient: archive-cygwin AT delorie DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2096338708A4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; s=default; t=1595958069; bh=uYKFRm/BhAaTw/BzWK9pi4RASeHEfzTnyLedoXRoBcU=; h=Date:To:Subject:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=DA89rqWMaBYLwyOEs+mfyJT/IjMBw5ccXFflzG+qKhBX4ZSQrs8w594W+z0pYhqMK eZcFEbQFtEj3hKZPu6SvLLAMFKrKfN1QZz1r3kIU3JQIderhlUu29j3mydX2uUMonJ fpLs867Fqx8m9RYoTgqHcpmY5PH2Wb8CwQXfKg58= X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org E1F81384C005 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-06.nifty.com 06SHejUA022147 X-Nifty-SrcIP: [124.155.38.192] Date: Wed, 29 Jul 2020 02:40:53 +0900 To: cygwin AT cygwin DOT com Subject: Re: stty -cooked not usable since cygwin-3.1.1-1 Message-Id: <20200729024053.52095c2f5a8d6356d748935f@nifty.ne.jp> In-Reply-To: References: <20200113200152 DOT 5243a304d481677c61c12450 AT nifty DOT ne DOT jp> <12d7cb6e-b900-6780-1d1c-80ed84cc82d5 AT bahnhof DOT se> <1ea4e90c-7075-39e8-a518-40bc764a5237 AT bahnhof DOT se> <20200729013848 DOT cf6d4d99464e92d92d346029 AT nifty DOT ne DOT jp> X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.30; i686-pc-mingw32) Mime-Version: 1.0 X-Spam-Status: No, score=-0.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, KAM_NUMSUBJECT, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Takashi Yano via Cygwin Reply-To: Takashi Yano Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: cygwin-bounces AT cygwin DOT com Sender: "Cygwin" On Tue, 28 Jul 2020 18:56:06 +0200 Thomas Wolff wrote: > Am 28.07.2020 um 18:38 schrieb Takashi Yano via Cygwin: > > On Tue, 28 Jul 2020 15:56:54 +0200 > > Rabbe Fogelholm wrote: > >> Rabbe Fogelholm wrote: > >>> Takashi Yano wrote: > >>>> On Mon, 13 Jan 2020 11:52:43 +0100 > >>>> Rabbe Fogelholm wrote: > >>>>> I am running a console Java program that is started from a shellscript > >>>>> wrapper. Before invoking Java the wrapper calls `stty -cooked'. The Java > >>>>> program polls the keyboard using System.in.available() and reads > >>>>> characters immediately using System.in.read(), without waiting for the > >>>>> Enter key to be pressed. > >>>>> > >>>>> This way of combining `stty -cooked' and Java has stopped working since > >>>>> version 3.1.1-1 of the Cygwin package. The Java thread that reads the > >>>>> keyboard hangs until Enter is pressed, which is not desirable. > >>>>> > >>>>> I had to downgrade to version 3.0.7-1 to resolve the problem. > >>>>> > >>>>> Versioning information: > >>>>> > >>>>> java version "1.8.0_202" > >>>>> Java(TM) SE Runtime Environment (build 1.8.0_202-b08) > >>>>> Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode) > >>>>> > >>>>> OS Name: Microsoft Windows 10 Pro > >>>>> Version: 10.0.17763 Build 17763 > >>>>> System Type: x64-based PC > >>>>> > >>>>> See also the enclosed cygcheck.out. > >>>>> > >>>>> To demonstrate the issue I enclose a small Java program that should be > >>>>> able to read single keystrokes when `stty -cooked' is in effect. > >>>> Does your java program work in command prompt? cygwin 3.1.x uses > >>>> pseudo console, so the native (non cygwin) program works as if it > >>>> is executed in command prompt. > >>>> > >>> With cygwin 3.1.x I can't find a way to make my program work. > >>> > >>> When running from within a Cygwin64 terminal the `stty -cooked' command > >>> terminates with exit code 0, but the Java program behaves just as if > >>> `stty -cooked' is not in effect: It does not handle single keystrokes > >>> immediately. > >>> > >>> When running from a Windows command prompt I can execute the stty > >>> program as \cygwin64\bin\stty. However, when given the '-cooked' > >>> argument it complains: > >>> /usr/bin/stty: 'standard input': unable to perform all requested operations > >>> > >>> - and here as well the Java program behaves as if `stty -cooked' is not > >>> in effect. > >> Some time has passed; I am just curious if anyone may have found a > >> solution to the "stty -cooked" issue. With cygwin-3.0.* it was possible > >> to have a Java program act on single keystrokes, with cygwin-3.1 I don't > >> know how to do it. Any ideas welcome! > > Solution 1: > > Redesign your java program using JNA with kbhit()/getch() instead of > > System.in.available()/System.in.read(). > > > > Solution 2: > > Add SetConsoleMode() call with ENABLE_LINE_INPUT flag cleared using JNA. I'm sorry, but this does not work as far as I tested. I'm not sure why. > Couldn't cygwin clear this flag when it sets up ConPTY while the pty is > in raw mode? Thomas's proposal will not work as well. -- Takashi Yano -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple