Page 1 sur 1

Bascule Minuscules/mAJUSCULES

Posté : lun. 12 août 2024 16:51
par gregelec
Bonjour à tous
J'ai comme projet de faire un script qui inverse automatiquement un texte tapé au clavier avec la touche majuscule enfoncé en un texte avec la bonne casse.
Il m'arrive parfois d'écrire avec le clavier en majuscules au lieu de minuscules et c'est pénible de tout réécrire.
j'aimerais pouvoire sélectionner un texte ,faire un clic droit ,choisir inverser et la montexte en majuscule est transformé en minuscule.

ex: lA PHRASE ICI N4EST PAS DANS LA BONNE CASSE §

avec l'inversion cela donnerais : La phrase ici n'est pas dans la bonne casse.

Qui peut me donner un début de piste surtout pour intégrer la fonction dans le clic droit de la souris sur une sélection de texte.

Re: Bascule Minuscules/mAJUSCULES

Posté : lun. 12 août 2024 17:05
par jchd
S'il s'agissait seulement d'inverser la casse, ça serait plutôt simple.
Mais là il faut remplacer de nombreux caractères "clavier" par leur version "shiftée", par exemple "!" et "§". Déjà il faut choisir le bon clavier, puis construire une table (ou une map) permettant de passer d'un niveau de shift clavier à l'autre, touche par touche.

Re: Bascule Minuscules/mAJUSCULES

Posté : lun. 12 août 2024 17:11
par gregelec
La difficultée c'est de rajouter un item dans le menu contextuel de la sélection de texte comment l'identifier dans la base de registre?
Le code fonctionne

Code : Tout sélectionner

#include <MsgBoxConstants.au3>
;
$maj="12 4567890°+AZERTYUIOP¨£QSDFGHJKLM%µWXCVBN?./§"
$min="&é '(-è_çà)=azertyuiop^$qsdfghjklmù*wxcvbn,;:!"

$texte_exemple="lA PHRASE ICI N4EST PAS DANS LA BONNE CASSE §"
$txt_ok=""
Local $long_txt =StringLen($texte_exemple)
local $cpt=1
local $cptlong=1
;MsgBox( $MB_SYSTEMMODAL, "", "La longueur de cette chaîne est de " & $long_txt & " caractères.")

for $cpt=1 to $long_txt Step 1
	stringmid ($texte_exemple,$cpt,1)
	$txt_ok=$txt_ok&StringMid($min,StringInStr($maj,stringmid ($texte_exemple,$cpt,1),1),1)
	$txt_ok=$txt_ok&StringMid($maj,StringInStr($min,stringmid ($texte_exemple,$cpt,1),1),1)

	Next
MsgBox( $MB_SYSTEMMODAL, "", $texte_exemple& @crlf & $txt_ok)


Re: Bascule Minuscules/mAJUSCULES

Posté : lun. 12 août 2024 20:27
par jchd
Perso, je ferai comme pour mes autres "raccourcis", via HotKeySet. Je ne m'amuse pas à gérer les menus de clic droit et autres.
L'exemple gère tous les scripts à casse (latin, cyrillique, grec, ...).

Code : Tout sélectionner

#include <Array.au3>
#include <Clipboard.au3>

HotKeySet("!{F9}", ChangeShift)
HotKeySet("!²", _Exit)

While 1
	Sleep(20)
WEnd

Func ChangeShift()
	Local Static $mMap[]
	$mMap["1"] = "&"
	$mMap["&"] = "1"
	$mMap["2"] = "é"
	$mMap["é"] = "2"
	$mMap["3"] = '"'
	$mMap['"'] = "3"
	$mMap["4"] = "'"
	$mMap["'"] = "4"
	$mMap["5"] = "("
	$mMap["("] = "5"
	$mMap["6"] = "-"
	$mMap["-"] = "6"
	$mMap["7"] = "è"
	$mMap["è"] = "7"
	$mMap["8"] = "_"
	$mMap["_"] = "8"
	$mMap["9"] = "ç"
	$mMap["ç"] = "9"
	$mMap["0"] = "à"
	$mMap["à"] = "0"
	$mMap["°"] = ")"
	$mMap[")"] = "°"
	$mMap["+"] = "="
	$mMap["="] = "+"
	$mMap["¨"] = "^"
	$mMap["^"] = "¨"
	$mMap["£"] = "$"
	$mMap["$"] = "£"
	$mMap["%"] = "ù"
	$mMap["ù"] = "%"
	$mMap["µ"] = "*"
	$mMap["*"] = "µ"
	$mMap[">"] = "<"
	$mMap["<"] = ">"
	$mMap["?"] = ","
	$mMap[","] = "?"
	$mMap["."] = ";"
	$mMap[";"] = "."
	$mMap["/"] = ":"
	$mMap[":"] = "/"
	$mMap["§"] = "!"
	$mMap["!"] = "§"

	Local $s = ClipGet()
	If @error Then Return
	Local $aText = StringSplit($s, "", 3)
	For $i = 0 To UBound($aText) - 1
		If MapExists($mMap, $aText[$i]) Then
			$aText[$i] = $mMap[$aText[$i]]
		Else
			$aText[$i] = (StringIsUpper($aText[$i]) ? StringLower($aText[$i]) : StringUpper($aText[$i]))
		EndIf
	Next
	$s = _ArrayToString($aText, "", Default, Default, "")
	ClipPut($s)
EndFunc   ;==>ChangeShift

Func _Exit()
	Exit
EndFunc   ;==>_Exit

#cs

gshn 356 ogzrno ui ojt âçèèéêëîïôöùûüæÆœŒ ioeJOI ѓͻϻҐЫЉБӂӬ JO jJIOPIJJ"(--èè__
GSHN "(- OGZRNO UI OJT Â9772ÊËÎÏÔÖ%ÛÜÆ挜 IOEjoi ЃϽϺґыљбӁӭ jo Jjiopijj35667788

#ce