terminal/canvas.lisp
in-package#:luv.terminal
defunghostty-writing-key
key
cond
memberkey'
key:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z
memberkey'
:0:1:2:3:4:5:6:7:8:9
intern
formatnil"DIGIT-~A"key
"KEYWORD"symbolpkey
cdr
assoc:test#'string=
symbol-namekey
'"-".:minus
"=".:equal
"[".:bracket-left
"]".:bracket-right
"\\".:backslash
";".:semicolon
"'".:quote
"`".:backquote
",".:comma
".".:period
"/".:slash
defuncanvas-key-name-to-ghostty-key
key
or
casekey
:return:enter
:control-left:control-left
:control-right:control-right
:shift-left:shift-left
:shift-right:shift-right
:alt-left:alt-left
:alt-right:alt-right
:super-left:meta-left
:super-right:meta-right
:menu:context-menu
:left:arrow-left
:right:arrow-right
:up:arrow-up
:down:arrow-down
:kp-plus:numpad-add
:kp-minus:numpad-subtract
:kp-multiply:numpad-multiply
:kp-divide:numpad-divide
:kp-period:numpad-decimal
:kp-enter:numpad-enter
:kp-equals:numpad-equal
:kp-comma:numpad-comma
:num-lock:num-lock
otherwise
cond
memberkey'
key:backspace:caps-lock:delete:end:escape:help:home:insert:page-down:page-up:pause:print-screen:scroll-lock:space:tab:f1:f2:f3:f4:f5:f6:f7:f8:f9:f10:f11:f12:f13:f14:f15:f16:f17:f18:f19:f20:f21:f22:f23:f24
intern
formatnil"NUMPAD-~C"
"KEYWORD"char
symbol-namekey
3t:unidentified
defuncanvas-key-consumed-modifiers
event
let
character
luv:canvas-key-event-characterevent
unshifted
luv:canvas-key-event-unshifted-characterevent
modifiers
luv:canvas-key-event-modifiersevent
when'
:shift
defunsend-pty-device-canvas-key-event
deviceevent
Project portable canvas key event into device's mode-aware input queue.
let
action
etypecaseevent
luv:canvas-key-press-event
if
luv:canvas-key-event-repeat-pevent
:repeat:pressluv:canvas-key-release-event:release
unshifted
luv:canvas-key-event-unshifted-characterevent
send-pty-device-keydeviceaction
canvas-key-name-to-ghostty-key
:modifiersluv:canvas-key-event-key-nameevent
luv:canvas-key-event-modifiersevent
:consumed-modifiers:textcanvas-key-textevent
:unshifted-codepointdefine-arithmetic-operator or
Logical disjunction of tests and raw truth values.
define-arithmetic-operator and
Logical conjunction of tests and raw truth values.
define-arithmetic-operator =
Test whether two compatible scalars are equal.
defun canvas-key-text
(event)define-arithmetic-operator not
Logical negation of one test or raw truth value.
define-arithmetic-operator <
Test whether one compatible scalar is less than another.
defun send-pty-device-canvas-key-event
(device event)defclass canvas-key-event
A portable physical-key event with logical modifiers and layout text.
defclass action
One named verb over a session.
defun send-pty-device-key
(device action key
&key modifiers consumed-modifiers text unshifted-codepoint composing-p)Enqueue one semantic Ghostty key event for DEVICE's child process. Encoding happens on the PTY owner against the terminal's then-current modes.
Projection from luv's portable canvas key fact to Ghostty's W3C key fact.