Клавиатура, конечно, та же, но в другом режиме. X-сервер переводит клавиатуру в режим сканкодов и затем сопоставляет сканкоду то самое событие Key(Press|Release) event. В терминале же клавиатура по умолчанию в UTF-8 или ASCII режиме — scancodes мапятся в keycodes драйвером, которые согласно keymap'у мапятся в символы. Ну или даже в строчки. Так что действительно связь клавиши с символом в иксах совершенно не зависит от такой связи в терминале.
Можно предположить: юникс писался с расчётом на текстовые терминалы, юникс был всем любовен и прельстив, и отказываться от какой-то концепции в нём только для того, чтобы это логично выглядело на каких-то новомодных сверхдешёвых компах никому в голову не пришло. А там пошло-поехало…
А дальше терминал в соответствии с установленными параметрами (termios/ioctl) уже пишет в стандартный программы. Именно на этом этапе CR заменяется на CRLF.
no subject
Date: 2013-02-16 11:32 am (UTC)no subject
Date: 2013-02-16 11:45 am (UTC)no subject
Date: 2013-02-16 11:58 am (UTC)no subject
Date: 2013-02-16 12:02 pm (UTC)no subject
Date: 2013-02-16 12:21 pm (UTC)cat
^V[enter]^M
no subject
Date: 2013-02-16 01:08 pm (UTC)#include <stdio.h> int main() { int c = getchar(); printf("%d\n", c); return 0; }no subject
Date: 2013-02-16 04:13 pm (UTC)и шо оно докажет?
я написал какие кнопки жать надо
no subject
Date: 2013-02-16 04:52 pm (UTC)#include <stdio.h> int main() { char c; read(0, &c, 1); printf("%d\n", c); return 0; }А уж может ли что-то вам доказать — это от вас зависит.
no subject
Date: 2013-02-16 05:10 pm (UTC)13
брысь изучать матчасть!
no subject
Date: 2013-02-16 05:20 pm (UTC)no subject
Date: 2013-02-16 05:23 pm (UTC)no subject
Date: 2013-02-18 11:14 am (UTC)no subject
Date: 2013-02-18 11:15 am (UTC)no subject
Date: 2013-02-18 11:18 am (UTC)no subject
Date: 2013-02-16 04:18 pm (UTC)KeyPress event, serial 32, synthetic NO, window 0x1c00001, root 0x12f, subw 0x1c00002, time 1127141402, (42,36), root:(1782,936), state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES, " XLookupString gives 1 bytes: (0d) " " XmbLookupString gives 1 bytes: (0d) " XFilterEvent returns: False KeyRelease event, serial 35, synthetic NO, window 0x1c00001, root 0x12f, subw 0x1c00002, time 1127141492, (42,36), root:(1782,936), state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES, " XLookupString gives 1 bytes: (0d) " XFilterEvent returns: Falseno subject
Date: 2013-02-16 04:54 pm (UTC)no subject
Date: 2013-02-16 05:11 pm (UTC)или ты думаешь там клавиатура другая?
no subject
Date: 2013-02-16 05:21 pm (UTC)no subject
Date: 2013-02-16 05:22 pm (UTC)no subject
Date: 2013-02-16 06:13 pm (UTC)no subject
Date: 2013-02-16 06:17 pm (UTC)я его даже повторю "считаешь ли ты, что в иксах клавиатура другая?"
no subject
Date: 2013-02-17 11:28 pm (UTC)X-сервер переводит клавиатуру в режим сканкодов и затем сопоставляет сканкоду то самое событие Key(Press|Release) event.
В терминале же клавиатура по умолчанию в UTF-8 или ASCII режиме — scancodes мапятся в keycodes драйвером, которые согласно keymap'у мапятся в символы. Ну или даже в строчки.
Так что действительно связь клавиши с символом в иксах совершенно не зависит от такой связи в терминале.
no subject
Date: 2013-02-18 06:02 am (UTC)кстати, послей кеймапа-то что происходит?
no subject
Date: 2013-02-24 02:38 pm (UTC)А дальше терминал в соответствии с установленными параметрами (termios/ioctl) уже пишет в стандартный программы. Именно на этом этапе CR заменяется на CRLF.
no subject
Date: 2013-02-26 07:10 am (UTC)На LF:)
в остальном вполне правильно.
Ну а что Enter даёт CR на уровне драйвера терминала - вполне логично, потому что LF тут мало применялось.
no subject
Date: 2013-02-26 09:34 pm (UTC)