Source File
mouse.go
Belonging Package
github.com/gdamore/tcell/v2
// Copyright 2020 The TCell Authors//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use file except in compliance with the License.// You may obtain a copy of the license at//// http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.package tcellimport ()// EventMouse is a mouse event. It is sent on either mouse up or mouse down// events. It is also sent on mouse motion events - if the terminal supports// it. We make every effort to ensure that mouse release events are delivered.// Hence, click drag can be identified by a motion event with the mouse down,// without any intervening button release. On some terminals only the initiating// press and terminating release event will be delivered.//// Mouse wheel events, when reported, may appear on their own as individual// impulses; that is, there will normally not be a release event delivered// for mouse wheel movements.//// Most terminals cannot report the state of more than one button at a time --// and some cannot report motion events unless a button is pressed.//// Applications can inspect the time between events to resolve double or// triple clicks.type EventMouse struct {t time.Timebtn ButtonMaskmod ModMaskx inty int}// When returns the time when this EventMouse was created.func ( *EventMouse) () time.Time {return .t}// Buttons returns the list of buttons that were pressed or wheel motions.func ( *EventMouse) () ButtonMask {return .btn}// Modifiers returns a list of keyboard modifiers that were pressed// with the mouse button(s).func ( *EventMouse) () ModMask {return .mod}// Position returns the mouse position in character cells. The origin// 0, 0 is at the upper left corner.func ( *EventMouse) () (int, int) {return .x, .y}// NewEventMouse is used to create a new mouse event. Applications// shouldn't need to use this; its mostly for screen implementors.func (, int, ButtonMask, ModMask) *EventMouse {return &EventMouse{t: time.Now(), x: , y: , btn: , mod: }}// ButtonMask is a mask of mouse buttons and wheel events. Mouse button presses// are normally delivered as both press and release events. Mouse wheel events// are normally just single impulse events. Windows supports up to eight// separate buttons plus all four wheel directions, but XTerm can only support// mouse buttons 1-3 and wheel up/down. Its not unheard of for terminals// to support only one or two buttons (think Macs). Old terminals, and true// emulations (such as vt100) won't support mice at all, of course.type ButtonMask int16// These are the actual button values. Note that tcell version 1.x reversed buttons// two and three on *nix based terminals. We use button 1 as the primary, and// button 2 as the secondary, and button 3 (which is often missing) as the middle.const (Button1 ButtonMask = 1 << iota // Usually the left (primary) mouse button.Button2 // Usually the right (secondary) mouse button.Button3 // Usually the middle mouse button.Button4 // Often a side button (thumb/next).Button5 // Often a side button (thumb/prev).Button6Button7Button8WheelUp // Wheel motion up/away from user.WheelDown // Wheel motion down/towards user.WheelLeft // Wheel motion to left.WheelRight // Wheel motion to right.ButtonNone ButtonMask = 0 // No button or wheel events.ButtonPrimary = Button1ButtonSecondary = Button2ButtonMiddle = Button3)
![]() |
The pages are generated with Golds v0.8.2. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |