netch80: (Default)
[personal profile] netch80
На свежекупленной клавиатуре Gembird на клавише Esc добавлена надпись "АР2".

Но почему тогда на Enter не написано (сами знаете что)?

Date: 2013-02-16 11:32 am (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
ПС -- это ^J, а enter -- ^M.

Date: 2013-02-16 11:45 am (UTC)
ext_605364: geg MOPO4 (geg_MOPO4)
From: [identity profile] gegmopo4.livejournal.com
Сейчас-то при нажатии Enter программа обычно получает ПС.

Date: 2013-02-16 11:58 am (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
нет. проверяется элементарно.

Date: 2013-02-16 12:02 pm (UTC)
ext_605364: geg MOPO4 (geg_MOPO4)
From: [identity profile] gegmopo4.livejournal.com
Да, элементарно.

>>> import sys
>>> sys.stdin.read(1)

'\n'

Date: 2013-02-16 12:21 pm (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
так это ж говнопитон!

cat
^V[enter]^M

Date: 2013-02-16 01:08 pm (UTC)
ext_605364: geg MOPO4 (geg_MOPO4)
From: [identity profile] gegmopo4.livejournal.com
Нет, это Питон. Но можно повторить на Си:

#include <stdio.h>
int main()
{
    int c = getchar();
    printf("%d\n", c);
    return 0;
}
Edited Date: 2013-02-16 01:08 pm (UTC)

Date: 2013-02-16 04:13 pm (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
FILE*?
и шо оно докажет?
я написал какие кнопки жать надо

Date: 2013-02-16 04:52 pm (UTC)
ext_605364: geg MOPO4 (geg_MOPO4)
From: [identity profile] gegmopo4.livejournal.com
> FILE*?

#include <stdio.h>
int main()
{
    char c;
    read(0, &c, 1);
    printf("%d\n", c);
    return 0;
}


А уж может ли что-то вам доказать — это от вас зависит.

Date: 2013-02-16 05:10 pm (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
./ttt

13

брысь изучать матчасть!

Date: 2013-02-16 05:23 pm (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
ну так что, матчасть-то изучать будешь?

Date: 2013-02-18 11:14 am (UTC)
From: [identity profile] netch80.livejournal.com
Ты ему raw включил, что ли?

Date: 2013-02-18 11:15 am (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
нет, всего лишь -icrnl

Date: 2013-02-18 11:18 am (UTC)
From: [identity profile] netch80.livejournal.com
"А, это Вы, Штирлиц"

Date: 2013-02-16 04:18 pm (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
для совсем латыниных могу еще предложить запустить xev и там кнопку нажать:

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: False

Date: 2013-02-16 04:54 pm (UTC)
ext_605364: geg MOPO4 (geg_MOPO4)
From: [identity profile] gegmopo4.livejournal.com
Какой-такой xev в терминале?

Date: 2013-02-16 05:11 pm (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
запусти иксы.
или ты думаешь там клавиатура другая?

Date: 2013-02-16 05:21 pm (UTC)
ext_605364: geg MOPO4 (geg_MOPO4)
From: [identity profile] gegmopo4.livejournal.com
Мир не ограничивается иксами.

Date: 2013-02-16 05:22 pm (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
ты не ответил на вопрос

Date: 2013-02-16 06:17 pm (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
не-а.
я его даже повторю "считаешь ли ты, что в иксах клавиатура другая?"

Date: 2013-02-17 11:28 pm (UTC)
From: [identity profile] heliar.livejournal.com
Клавиатура, конечно, та же, но в другом режиме.
X-сервер переводит клавиатуру в режим сканкодов и затем сопоставляет сканкоду то самое событие Key(Press|Release) event.
В терминале же клавиатура по умолчанию в UTF-8 или ASCII режиме — scancodes мапятся в keycodes драйвером, которые согласно keymap'у мапятся в символы. Ну или даже в строчки.
Так что действительно связь клавиши с символом в иксах совершенно не зависит от такой связи в терминале.

Date: 2013-02-18 06:02 am (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
боже, откуда на писишках взялись клавиатуры в которых есть не только режим сканкодов?

кстати, послей кеймапа-то что происходит?

Date: 2013-02-24 02:38 pm (UTC)
From: [identity profile] heliar.livejournal.com
Можно предположить: юникс писался с расчётом на текстовые терминалы, юникс был всем любовен и прельстив, и отказываться от какой-то концепции в нём только для того, чтобы это логично выглядело на каких-то новомодных сверхдешёвых компах никому в голову не пришло. А там пошло-поехало…

А дальше терминал в соответствии с установленными параметрами (termios/ioctl) уже пишет в стандартный программы. Именно на этом этапе CR заменяется на CRLF.

Date: 2013-02-26 07:10 am (UTC)
From: [identity profile] netch80.livejournal.com
> Именно на этом этапе CR заменяется на CRLF.

На LF:)
в остальном вполне правильно.

Ну а что Enter даёт CR на уровне драйвера терминала - вполне логично, потому что LF тут мало применялось.

Date: 2013-02-26 09:34 pm (UTC)
From: [identity profile] heliar.livejournal.com
Да, спасибо за поправку.

Profile

netch80: (Default)
netch80

January 2026

S M T W T F S
    1 23
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 10th, 2026 09:43 pm
Powered by Dreamwidth Studios