MouseLook script Cap problem
I have edited your script just a bit and now it seems to work fine. The main problem with your script was that you applied the rotation first, then checked for the cap and, if the rotation was too big, applied another rotation. I think that this led to the shaking. 

The better aproach is to first calculate if the rotation would get too big when adding the offset, and if so just apply as much rotation as needed

import bge, math
from bge import render
from mathutils import Vector

def main():

cont = bge.logic.getCurrentController()
own = cont.owner

# Get the child object named "Camera"
camera = own.children['Camera']

# Props
cap = True
capLow = 20
capHigh = 120

# Get the sensor "Mouse"
mouse = cont.sensors ["Mouse"]

# sensib = Property on this object named "Sensibilite"
sensib = own['Sensibilite']

# Get the center of the screen
x = render.getWindowWidth()//2
y = render.getWindowHeight()//2

screen_mid = (x,y)

# center = Center of the screen
center = Vector(screen_mid)

# Get the position of the mouse
mouse_position = Vector(mouse.position)

# Define the rotation that should be made
offset = (mouse_position-center)*-sensib*0.0002

if mouse.positive: #This part has changed!
    # Get the rotation of the camera
    Camrot = camera.localOrientation.to_euler()
    Camrotx = math.degrees(Camrot[0])
    print(Camrotx)

    # Check if new rotation value would be too high
    if Camrotx + offset.y &gt; capHigh and cap == True:
        # Choose offset.y so that: Camrotx + offset.y = capHigh
        offset.y = math.radians(capHigh - Camrotx)

    # Check if new rotation value would be too low
    elif Camrotx + offset.y &lt; capLow and cap == True:
        offset.y = math.radians(capLow - Camrotx)

    # Apply the rotation the the camera
    camera.applyRotation(( offset.y, 0, 0), True)

# Apply the horizontal rotation to the player/parent object
own.applyRotation((0, 0, offset.x), True)

# Reset the mouse position
render.setMousePosition(x,y)

main()