uname -a возвращает
Linux d8 3.16.0-4-686-pae #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) i686 GNU/Linux
Работаю с форком hemlock, он находится здесь: https://bitbucket.org/budden/oduvanchik
Пытаюсь заставить его работать с utf-8 и выводить кириллицу. На данный момент он успешно открывает файлы с кириллицей. А вот ввести кириллицу с клавиатуры не получается. В исследованиях дошёл до того, что кнопка «ю» нормально проходит в функции xlib::enqueue-event:
(defun enqueue-event (new-event display)
(declare (type reply-buffer new-event)
(type display display))
;; Place EVENT at the end of the event queue for DISPLAY
(let* ((event-code (event-code new-event))
(event-key (and (index< event-code (length *event-key-vector*))
(svref *event-key-vector* event-code))))
(declare (type array-index event-code)
(type (or null keyword) event-key))
(if (null event-key)
(unwind-protect
(cerror "Ignore this event" "No handler for ~s event" event-key)
(deallocate-event new-event))
(with-event-queue-internal (display)
(threaded-enqueue new-event
(display-event-queue-head display)
(display-event-queue-tail display)
reply-next reply-buffer)
(unless (display-new-events display)
(setf (display-new-events display) new-event))))))
Как я понимаю, эта ф-я отправляет нажатие кнопки в очередь сообщений. При этом, независимо от раскладки, event-key равен :key-press .
Далее, в какой-то момент создаётся, как я понял, обработчик событий для окна:
(defmethod device-make-window ((device bitmap-device) start modelinep window font-family
ask-user x y width-arg height-arg proportion)
(let* ((display (bitmap-device-display device))
(thumb-bar-p (value oduvanchik::thumb-bar-meter))
(hunk (make-bitmap-hunk
:font-family font-family
:end the-sentinel :trashed t
:input-handler #'window-input-handler
:device device
:thumb-bar-p (and modelinep thumb-bar-p))))
...
(multiple-value-bind (xparent xwindow)
(maybe-make-x-window-and-parent window display start ask-user x y
width-arg height-arg font-family
modelinep thumb-bar-p proportion)
(unless xwindow (return-from device-make-window nil))
(let ((window-group (make-window-group xparent
(xlib:drawable-width xparent)
(xlib:drawable-height xparent))))
(setf (bitmap-hunk-xwindow hunk) xwindow)
(setf (bitmap-hunk-window-group hunk) window-group)
(setf (bitmap-hunk-gcontext hunk)
(default-gcontext xwindow font-family))
;;
;; Select input and enable event service before showing the window.
(setf (xlib:window-event-mask xwindow) child-interesting-xevents-mask)
(setf (xlib:window-event-mask xparent) group-interesting-xevents-mask)
(add-xwindow-object xwindow hunk *oduvanchik-windows*)
(add-xwindow-object xparent window-group *oduvanchik-windows*))
...
Как я понял, здесь устанавливается маска для фильтрации событий, но событие keypress в неё входит. Однако в функцию window-input-handler событие по нажатию на кнопку «ю» уже не приходит. Куда копать?