• [^] # Re: Clavier informatique

    Posté par (site web personnel, Mastodon) . En réponse au journal Des concepteurs qui ont éteint trop tôt leur cerveau. Évalué à 6. Dernière modification le 03 décembre 2021 à 04:35.

    Je n'avais pas vu ce commentaire dans le flot.

    ainsi que le début d'errance de la touche Échapp grrr

    Alors oui, la touche Échap sur le pavé numérique ça va être difficile d’utiliser vim...

    Cette touche a aussi, dans d'autres contextes, plein d'usages par effet miroir à Enter.
    C'était historiquement une touche de bascule qui doit donc être dans la première colonne et non au niveau du pavé numérique où ça n'a rien à y foutre... Sinon, l'historique de cette colonne de gauche est intéressante :

    • Shift seul (D0,C0,B0) sur les machines à écrire au début du siècle de sa démocratisation (Au début, on avait un touche dédiée par caractère, et avant le Duplex de Jewett en 1894, on ne faisait que des majuscules... Le concept de bascule est apparu sur les Lambert / Ford / Munson —resp. 1902 / 1895 / 1890— et c'est l'utilisation de la colonne à l'extrême gauche de cette dernière qui s'est d'abord démocratisé...)
    • Tab (D0) Shift (C0) CapsLock (B0) sur les dernières machines à écrire (la tabulation semble être apparue vers 1897 et le verrouillage des majuscules apparu rapidement aussi est devenu discriminant sur un marché foisonnant, comme on peut le voir chez Smith-Corona et Underwood par exemple)
    • Figs (B0), un équivalent du AltGr actuel sur le Teletype Model 28 de 1953 (mais aussi le Model 32), et avec une touche de fonction qui faisait office de ShiftLock. Mais cette touche Figs peut avoir aussi un rôle de Ctrl actuel, c'est selon chaque téléscripteur Baudot et pas obligatoire (on n'en trouve pas trace chez Siemens par exemple...)
    • Alt (D0) Ctrl (C0) Shift (B0) sur le Teletype Model 33 apparu en 1963 et qui a influencé : UNIX, ASCII, etc.
    • Tab (D0) Ctrl (C0) ShiftLock/Shift (B99/B0) pour Dell VT05 en 1970
    • Break/Esc (E99/E0) Clear/Tab/Alt (D98/D99/D0) Form/VT/RubOut (C98/C99/C0) ShiftLock/Top/Shift (B98/B99/B0) Meta/Ctrl (A99/A0) pour le Knigt keyboard du MIT-AI en 1974 et qui introduit vraiment la touche Alt que reprendra IBM, principal ajout par rapport au Sail keyboard du MIT-AI de 1970. À noter que RubOut est l'équivalent de BackSpace (au sens d'effacement arrière j'entends.) et que Top est l'équivalent de notre AltGr (initialement apparu sur les claviers Sun Microsystem)
    • Esc (E0) Tab (D0) Ctrl/CapsLock (C99/C0) Scroll/Shift (B99/B0) sur les Dell VT dès 1974 (en gros 74/75/76/78/78 resp. pour les modèles 50/52/55/62/100.) Leur clavier fut repris par d'autres, comme ZDS et Wyse et Qume qui étaient compatibles VT100...
    • Esc (D0) Ctrl (C0) Shift (B0) pour les ADM de Lear Siegler Inc dès 1973 (photo plus tôt/haut pour ADM-3A de 1976), mais aussi pour Apple II en 1977.
    • Esc (E0) Tab (D0) Ctrl/CapsLock (C99/C0) BackTab/Shift (B99/B0) chez TeleVideo à partir de 1979
    • I/II/System (E98/E99/E0) III/IV/Network/Tab (D97/D98/D99/D0) ModeLock/AltMode/RubOut (C98/C99/C0) CapsLock/Top/GreekFront/Shift (B97/B98/B99/B0) Hyper/Super/Meta/Ctrl (A97/A98/A99/A0) sur le Space cadet en 1980, qui s'est méga lâché...
    • Esc (E0) Tab (D0) Ctrl (C0) Shift (B0) Alt (A0) pour IBM Model F pour PC/XT en 1981. Ce clavier de 83 est, je crois, le premier à introduire les touches F1 à F10.
    • Esc (E0) Tab (D0) CapsLock/Ctrl (C0) ShiftLock/Shift (B99/B0) pour les Acorn BBC dès fin 1981. Leur clavier, qui rappelle ceux de Dell et de TeleVideo, a en plus trois diodes indiquant le verrouillage et les touches f0 à f9 sur une rangée en haut.
    • BackSpace (E0) Ctrl (D0) RunStop/ShiftLock (C99/C0) Commodore/Shift (B99/B0) sur le C64 en 1982, et le reste de la gamme dans la décennie. La touche Commodore est l'équivalente de la touche Commande/Apple/Windows.
    • Esc (E0) Tab (D0) CapsLock (C0) Shift (B0) pour les Amstrad CPC à partir de 1984.
    • Tab (D0) CapsLock (C0) Shift (B0) Ctrl (A0) pour IBM Model F pour PC/AT en 1984. Y sont ajoutés : la touche SysReq, une seconde touche Enter au niveau du pavé numérique, les trois diodes de verrouillage (Caps/Num/Scroll), et l'incompatibilité avec les PC/XT. Au passage, les touches BackSpace et Shift ainsi que le 0 du pavé numérique sont élargies.
    • Esc (F0) Tab (D0) Ctrl/CapsLock (C99/C0) Shift (B0) Alt/Amiga (A99/A0) pour Amiga à partir de 1985. La touche Amiga est l'équivalente de la touche Commande/Apple/Windows.
    • Esc (E0) Tab (D0) Ctrl (C0) Shift (B0) Alt (A0) pour Atari ST à partir de 1985. Noter l'usage astucieux de la touche Tab sur Atari 400 (cf. image plus haut/tôt) qui par contre n'a pas de touche Alt.
    • Esc (F0) Tab (D0) CapsLock (C0) Shift (B0) Ctrl/Alt (A0/A1) pour IBM Model M en 1986, en 101 (US) et 102 (Europe) touches. On a maintenant les touches de fonction F1 à F12 disposés horizontalement en haut (bien qu'on pouvait des fabriquants qui font deux colonnes de six tout à gauche, les touches Ctrl et Alt sont doublées (en fait ce sont des touches distinctes car renvoyant des scancodes distincts) comme pour Shift déjà, la fonction navigationnelle du pavé numérique est dédupliquée (mais paradoxalement l'autre ne devient pas exclusivement numérique et on toujours besoin de NumLock inactif par défaut). Plus tard les variantes 103 (Korea) / 104 (Brazil) / 106 (Japan) touches sont produites.
    • Esc (E0) Tab (D0) CapsLock (C0) Shift (B0) Ctrl/Copy (A0/A1) pour les Amstrad CPC+, à partir de 1990, qui ajoutent aussi les touches F0 à F9.

    Le plus rageant pour utiliser Vi n'est pas la touche Esc mais la touche Ctrl qui a été malmenée aussi. Initialement (cf. Teletype/VT/ADM), elle était à l'emplacement actuel de CapsLock (C0), comme sur le HHKb ou le clavier de OLPC XO. Heureusement que certains systèmes permettent aux usagers saints d'esprit de les permuter à défaut de pouvoir virer le malotru ou pouvoir le rendre plus utile... Partout, divers hackers, emacsiens ou pas, virent ce CapsLock désuet.
    Vi respectant le système Unix, ^[ te permet d'avoir l'échappement (et je confirme que ça fonctionne, mais je n'utilise pas azerty.) Et en dehors de vi, j'ai souvent besoin d'avoir aisément accès à cette touche pour mieux exploiter la ligne d'édition (et l'historique) du shell (et ce quelque soit le keys binding choisi.) Il y aussi plein de programmes ou ce serait plus pratique pour mon pauvre doigt.

    Historiquement la commande Carriage Return renvoie le curseur au début de la ligne courante, et la commande Line Feed avance à la ligne suivante. Sur une machine mécanique, faire CR avant LF ou LF avant CR produit le même résultat, mais si on numérise ces commandes dans des fichiers, l’ordre produit des fichiers différents. Et quand il fut jugé bon de fusionner CR et LF en une seule commande, certains ont choisi CR (\r), d’autres comme UNIX ont choisi LF (n), et d’autres encore sont resté à CRLF comme DOS/Windows jusqu’à des versions très récentes de Windows 10.

    C'est légèrement plus subtile.
    Sur les machines à écrire, on ramenait le chariot en même temps qu'on avançait la feuille d'une ligne... Exemples, sur Youtube, avec la Remington portable de 1923 (sans la barre) et la Hermes Rocket de 1961 (avec la barre). Il est donc logique que certains systèmes (Commodore 8-bits —C64, C128—, Acorn BBC, ZX Spectrum, TRS-80, Apple II series, Oberon, the classic Mac OS, MIT Lisp Machine, OS-9) choisissent CR comme marquer de nouvelle ligne...
    Avec l'avénement des téléscripteurs, l'ISO qui planchait sur l'ASCII a opté, en 1963, pour l'usage de LF ...ou de CR+LF. Le développement de Multics a débuté en 1964 et ils ont naturellement opté pour LF comme marqueur de fin de ligne (et donc saut sur une nouvelle ligne) ; sauvegarder un caractère valant mieux que sur deux vu le coût certain du stockage. Les suivants (Unix et dérivés, BeOS, Amiga, RISC OS, etc.) en ont hérité.
    Je dis « marqueur de fin de ligne » car ces systèmes distinguent le fichier de son traitement (un genre de séparation du fond de la forme) et charge au « pilote d'impression/affichage » de faire le traitement nécessaire avant la sortie (ce traitement pouvant être justement d'envoyer CR+LF à certains téléscripteurs ou imprimantes.) Dans ce même esprit (marqueur de fin de ligne et non code d'impression), on peut avoir d'autres codes que xA (LF) ou xD (CR) et ainsi EBDCDIC utilise x76 (NL) tandis que ATASCII utilise x9B
    Cependant, tous les systèmes n'utilisaient pas le principe de pilote de périphérique mais adressaient directement le matériel. Or, de nombreux téléscripteurs (dont le fameux Modèle 33) avaient deux commandes distinctes : une pour avancer la feuille (LF) et une pour se positionner en début de ligne (CR). Donc les BBC Micro stockaient et envoyaient LF+CR. Les système DEC (VMS, TOP-10, RT-11) et Digital Research (CP/M, MP/M) et ses héritiers directs (QDOS ayant donné PC-DOS et MS-DOS, Amstrad CPC) ou dérivés (Atari TOS, OS/2, Symbian OS, Palm OS) ont utilisé CR+LF ...comme permis par ISO et seul authorisé par ASA (American Standards Association, co-auteur de l'ASCII qui deviendra ANSI). Ce choix convenait aussi pour les téléscripteurs qui reconnaissaient CR seul car permettait de pallier la lenteur de l'opération en envoyant un code qui écrira un caractère blanc ou ne fera rien. (pour quelques uns ce ne fut pas suffisant pour leur donner assez de temps.)

    Bref quand on utilise vim, on est conditionné par le fait que l’auteur de vi avait ce matériel très spécifique que personne n’utilise, c’est dire : l’ergonomie de ce matériel n’était déjà pas adapté pour Unix, et vi a été conçu pour l’ergonomie de ce clavier, pas l’ergonomie d’un clavier adapté pour Unix.

    Non, comme je viens de l'écrire, un peu plus tôt, le système Unix a été bel et bien conçu pour pouvoir tourner avec les consoles Teletype et VT...


    Quelqu’un saurait m’expliquer s’il y a une différence entre 5dd et d5d? %)

    Dans le premier cas, tu lui dit de faire cinq fois (tu commences par taper le nombre d'occurrences souhaité) la suppression de ligne (tu indiques ensuite l'action à faire). C'est le plus simple à comprendre. À comparer avec 5dw où tu lui dit de supprimer le mot suivant (dw) et de répéter l'action cinq fois (.....)

    Dans le second cas, tu lui dit de faire une fois (occurrence par défaut quand on ne précise pas, sauf rares exceptions comme G...) la suppression de cinq lignes. À comparer avec d5w où il fait cette une seule action mais sur une portée cinq fois plus grande.

    Mais au final, le résultat est le même dans le cas-ci : blanc-bonnet bonnet-blanc.

    La règle est N fois une Action sur une Portée (plus précisément le texte de la position du curseur à l'emplacement indiqué par un nombre d'Occurence d'un Mouvement...) : N=1, A=d, P=5w, P étant lui-même O=5 et M=w, pour d5w ; tandis que N=5, A=d, P=w, avec P décomposé en O=1 et M=w pour 5dw. Et tu peux mixer les deux : 3d2w donnera le même résultat que d6w (sous-entendu 1d6w) ou 6dw (sous-entendu 6d1w) ou même 2d3w héhé.
    Il y a juste un petit raccourci qui s'ajoute : quand tu précises P=A (comme cliquer sur le bouton actif/sélectionné ou appuyer sur Entrée) il prend la portée par défaut pour l'action. Du coup, quand tu laisses la main sur touche D, soit dd, c'est comme si tu fais 0 (qui est un autre raccourci) puis dj (qui comme on l'a vu est en fait 1d1j pour chipoter)

    Utiliser :n,Nd pour supprimer de la ligne n à la ligne N est pratique mais ça m’obligerait à utiliser ma mémoire. =)

    Si les lignes sont à l'écran (c'est plus prudent de ne pas avoir à faire recours à la mémoire) alors commence par :se nu (les numéros ne sont pas affichés par défaut.) La numérotation peut être relative aussi (par exemple :-2,+3d pour de deux lignes avant la courante à trois lignes après) ou même trouvée par recherche...

    "It is seldom that liberty of any kind is lost all at once." ― David Hume