2017-03-05 5 views
1
私はコンソールアプリケーションを作成したい

でイベントをスクロールして対処することができ、そしてそれは、コンソールは、どのように私はアップル端子

私はそれが別の画面にうまく動作しますが、疑問を持ってい

からのキー入力を受信する必要があります。 Apple Terminal

私はアップルターミナルでスクロールすると、コードはスクロール操作をキャッチしますが、端末に^[OAを印刷することはできません。 これはiTerm.app

に発生しませんとTerminal.app

lessまたはvimを使用している場合、これはまた、私は、私はスクロール操作を読むことができるし、表示されません方法を得ることを期待発生しません端末固有の機能です

#!/usr/bin/env ruby 
require 'io/console' 

def rc 
    STDIN.echo = false 
    STDIN.raw! 

    input = STDIN.getc.chr 
    if input == "\e" then 
    input << STDIN.read_nonblock(3) rescue nil 
    input << STDIN.read_nonblock(2) rescue nil 
    end 
ensure 
    STDIN.echo = true 
    STDIN.cooked! 

    return input 
    STDIN.getch 
end 


print "\e[?1049h" 
print "\e[?1h" 
print "\e=" 
print "\e[1;24r" 

loop do 
    c = rc 
    break if c == "\u0003" 
    p c 
    print c 
end 

print "\e[?1049l" 

答えて

1

:ここ^[OA

は、Rubyによる私のサンプルコードです。 Preferencesのダイアログに関連する設定が表示されません

これはアドオンで行うことができます。アプリケーションへのマウスイベント)。

背景:Terminal.appには、xtermとの互換性のための機能が(ゆっくりと)追加されています。これはもともとxtermの機能ではありませんでした。 iTerm2は、/またはgnome-terminalかxtermのどちらかをコピーすることでそれを手に入れました(xtermを除いて、機能が追加されたときに誰も気にすることはありません)。 iTerm2やTerminal.appのいずれかは、例えば、xtermのから機能をコピーした場合patch #282でのxtermで行う(ただし、機能を完了するために、フォローアップ作業に注意)として

することは、それらが機能オプションになるだろう。 xtermは、Xリソース設定と、それを設定するための制御シーケンス(プライベートモード1007)の両方を提供します。対照的に、VTEの動作(GNOME端末「スキン」にすべての機能を提供するライブラリ)はハードコードされています。

私はここの特徴についてコメントしました: