Utilisateur:Sarcastic

De Disposition de clavier bépo

J'ai été utilisateur du bépo depuis la version 0.6.5.1, et jusqu'à la version 1.0-rc2. Maintenant, je suis passé au dvorak-us, un poil modifié pour accueillir une touche morte pour faire toutes les zarberies bien françaises que sont les accents, les cédilles, et les autres fioritures comme les guillemets doublement chevrotants, et tout ce genre de glyphes. J'ai fait ce changement entre autre pour la programmation, puis par curiosité, un peu.

Ah. Et mon mot de passe est toto2. Je le mets là pour ne pas l'oublier — c'est que ça commence à prendre de la place tout ces post-its sous le clavier, avec tout ces sites.

Matériel

J'utilise un clavier Logitech Ultra Flat que je compte remplacer par un TypeMatrix. Et un trackball au pouce, de chez Logitech aussi.

Emacs

Voir ici.

Shell

Alors, pour trouver comment modifier les raccourcis dans le shell, on peut dire que j'ai carrément pataugé. En fait, y a trois éléments sur lesquels on peut intervenir : le terminal (le vrai), le shell à proprement parler (sh, bash, zsh) et l'émulateur de terminal (rxvt, xterm, uxterm, et d'autres). Et chacun a ses limitations plus ou moins rigolottes.

rxvt-unicode

Lui permet de modifier le mapping au niveau des touches ctrl. Ça permet par exemple de retrouver C-c, C-z et C-d à leurs places habituelles (Surtout C-z, en fait). Voilà un rapide replacement de ces trois là :

! C-c
URxvt.keysym.C-x:	\003
! C-z
URxvt.keysym.C-0xe9:	\032
! C-d
URxvt.keysym.C-i:	\004

Les codes en \xxx ce sont des caractères en octal. Il s'avère que les caractères de \001 à \032 (01d à 26d, si vous comptez pas encore en octal) ne sont rien d'autre que l'alphabet avec control dessus. Ça tombe bien, hein !

Il faut caser ces lignes dans le fichier ~/.Xdefaults. Les ubunteros gens peu avertis peuvent redémarrer X, mais a priori, redémarrer vos terminaux devrait suffir. Et voilà C-c, C-z et C-d duppliqués à des emplacements moins moisis que ceux avec lesquels on se retrouve par défaut en bépo. Mais juste pour rxvt-unicode, pas pour xterm et toute la compagnie.

zsh

On peut modifier les déplacements du curseurs et un tas de trucs avec la commande bindkey. Plus ou moins en cours, selon mon humeur.

stty

Alors, le petit problème de stty c'est qu'il modifie les touches pour tous les utilisateurs et pour tous les terminaux (graphiques ou non). Et plus grand inconvénient encore, il ne marche qu'en local. Ça veut dire que si vous vous connectez en ssh à un serveur, vous trouverez les raccourcis standards.

En plus de ça, seules les lettres simples ont l'air de marcher, donc exit les lettres accentuées (et vu que l'équivalent de C-z en bépo serait C-é…).

Cette méthode est particulièrement dégueulasse, mais elle a le — faible — mérite d'exister (personnellement, je la conseille pas, et je ne l'utilise pas), et comme je l'ai tapée avant d'avoir l'idée de chercher dans urxvt, je la laisse. Voilà comment modifier les raccourcis via stty :

$ stty -a # Liste les raccourcis et les touches auxquelles ils sont attribués
$ stty intr ^X # Déplacement du C-c en C-x
$ stty susp ^B # Déplacement du C-z en C-b

XMonad

Mon fichier de configuration est tellement chaotique, que j'ose pas trop le mettre ici. Si quelqu'un demande, peut-être que je trouverai le courage de le nettoyer.

Irssi

Petit script qui affiche les liens entre doubles crochets dans la fenêtre serveur.

use strict;
use vars qw($VERSION %IRSSI);
use Irssi;

$VERSION = 0.1;
%IRSSI = (
    authors => "Sarcastic",
    name => "debepify script",
    description => "Print url between [[]] on #fr-dvorak-bepo",
    license => "WTFPL"
    );

sub uniq
{
    my %hash = map { $_, 1 } @_;
    return keys %hash;
}

sub urlencode
{
    my $url = shift;
    $url =~ y/ /_/;
    $url =~ s/([^A-Za-z0-9_\/:.-])/sprintf("%%%%%02X", ord($1))/seg;
    return $url;
}

sub debepify
{
    my $msg = shift;
    my @links;
    foreach my $link (split(/\]\]/, $msg))
    {
	push @links, $1 if ($link =~ /\[\[(.+)$/);
    }
    foreach (uniq @links)
    {
	print CRAP "debepify: http://www.clavier-dvorak.org/wiki/", urlencode($_);
    }
}


sub sig_message_public
{
    my ($server, $msg, $nick, $address, $target) = @_;
    if ($target eq '#fr-dvorak-bepo'
	&& $msg =~ /\[\[[^<>]+?\]\]/)
    {
	debepify $msg;
    }
    return;
}

Irssi::signal_add ('message public', \&sig_message_public);